终端里的小细节:选中复制、截图粘贴和项目提醒

终端里的小细节:选中复制、截图粘贴和项目提醒

到了 alpha.5 和 alpha.6,砚开始集中补终端里的几个细节。

它们不像"接入窗口前端"那样显眼,但实际工作时使用频率很高:选中输出就能复制,全选也能复制,截图能交给终端里的 Claude Code,后台项目的任务有变化时能提醒。

选中即复制,不能只覆盖拖动

alpha.5 加入终端选中复制:鼠标拖动、双击、三击选中的文本会放进剪贴板。配置里可以关闭:

toml 复制代码
[terminal]
copy_on_select = false

随后 alpha.6 又补了两处:Select All 同样复制所选内容,改配置也能影响已经打开的终端。

这两步很能说明交互功能的完成标准。用户理解的"选中"是一组行为,不会因为实现分成鼠标拖动和菜单命令,就接受它们表现不一致。

配置也类似。如果说明写的是关闭某个行为,用户自然会在当前终端验证。只有新开的终端生效,就需要把限制说出来,或者把现有实例同步好。

图片粘贴不是把图片当文字发出去

在终端运行 Claude Code 时,剪贴板可能只有一张截图,没有文本。普通粘贴路径拿不到文字,看起来就像什么都没发生。

这一版沿用了所接入终端实现的机制:在符合协议条件的路径里发送空的 bracketed paste,让 Claude Code 自己读取剪贴板里的图片。

也就是说,砚没有在这里解析图片、做 OCR 或把图片编码成文本塞给 shell。处理截图的仍然是终端内的程序。

这个区分很重要。它解释了为什么功能描述应该是"给终端里的 Claude Code 粘贴截图",而不能概括成"所有命令行工具都支持图片粘贴"。

为什么改在终端库这一层

是否启用了 bracketed paste,是终端插件掌握的状态。外层编辑器如果不看这个状态,直接发送控制序列,在不支持的程序里可能变成可见乱码。

所以修复需要在真正知道协议状态的位置完成。

截至这次记录,go.mod 的 MyGo require 是 0.4.8,实际通过 replace 指向 sorrycc/mygo 的固定伪版本,提交为 a816c16。仓库 ADR 记录,这个分支承载了所需的三项终端改动。

这不是一句"升级到最新版"。直接依赖声明和实际解析到的模块需要一起看,否则后面排查行为时,会看错代码来源。

ADR 也留了回归主线的条件:相应修复进入上游发布版之后,再考虑去掉 replace。那是后续维护任务,本篇没有重新确认上游当前状态。

项目提醒要回到对应项目

项目标签模式下,终端可能在另一个暂时看不见的项目中运行。响铃或通知发生时,砚会用强调色标记那个项目方块,提示里说明原因,项目显示后消除提醒状态。

它很适合构建或 agent 在后台运行的场景,但这仍然依赖终端里的程序发出相应信号。编辑器没有据此理解每个任务,也没有自动判断业务意义上的成功失败。

项目标签同时可以拖动排序,让常用项目保持稳定位置。这些小变化让多个项目共处一个窗口时,切换成本低了一些。

终端还支持多个会话,配色随主题变化。输出里的本地文件路径可以用 Cmd 点击打开,带 :行号 的位置也能跳过去。这些入口把命令输出重新接回编辑区,省掉手动复制路径再查找的一步。

版本记录里的几个区别

alpha.5 的选中复制配置只影响后开终端,alpha.6 已补到当前终端;全选复制与截图粘贴也是 alpha.6 的内容。写开发日志时,不能把后一版补上的能力倒填成前一版已经完整具备。

同样,早期原生测试验证过终端运行命令、大小变化、Ctrl+C、关闭及缺库降级,并不自动覆盖后来新增的每一种图片粘贴场景。使用新能力时,仍然要观察真实程序和剪贴板行为。

做到这一步,砚已经能把编辑、项目和终端接在一起。功能清单很容易继续变长,下一篇则把账摊开:哪些确实有了,哪些只是正在写,哪些仍需要验证。


相关推荐
敲代码的玉米C1 小时前
一个内核,两张脸:先把终端编辑器跑起来
go
敲代码的玉米C1 小时前
编辑器的第一块砖:文本、快照和撤销
go
敲代码的玉米C1 小时前
路线拐了个弯:接入 MyGo,借鉴 Mayoi
go
敲代码的玉米C1 小时前
写到 alpha.6:现在有什么,还有哪些账没还
go
敲代码的玉米C1 小时前
自动换行和多项目:看着是 UI,背后都是状态
go
敲代码的玉米C1 小时前
第一次打出 DMG:能运行,离能发布还有多远
go
敲代码的玉米C1 小时前
功能越多,越要小心那一次保存和替换
go
我的div丢了肿么办6 小时前
go语言通过反射来操作结构体中的数据
后端·go
人人都是软件工程师6 小时前
16-并发编程(下):channel、select 与同步原语
go