终端里的小细节:选中复制、截图粘贴和项目提醒
到了 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、关闭及缺库降级,并不自动覆盖后来新增的每一种图片粘贴场景。使用新能力时,仍然要观察真实程序和剪贴板行为。
做到这一步,砚已经能把编辑、项目和终端接在一起。功能清单很容易继续变长,下一篇则把账摊开:哪些确实有了,哪些只是正在写,哪些仍需要验证。