为什么在终端里 Ctrl+V 不是粘贴,Ctrl+V 和 Ctrl+X 在你运行的程序里做什么,为什么 AI 智能体的 Ctrl+V 通过 SSH 什么也拿不到——以及真正能用的复制和粘贴方法:用键盘、鼠标或触摸,在 herdr 和 tmux 里也行。
需要 Term v26.6.0 或更高版本。
Shift+Insert 作为第二个粘贴键、手机上的 Ctrl+Shift+C、在使用鼠标的程序里按住 Shift 拖动复制、在 herdr 和 tmux 里用触摸粘贴,以及粘贴按钮出现在 AI 智能体的输入处,从 26.6.0 起提供。
撰写于
在终端里,Ctrl+V 和 Ctrl+X 不是复制粘贴,而是普通按键,它们的含义由你正在运行的程序决定。Term 会像桌面终端一样把它们原样发出——无论来自实体键盘,还是按键栏上的 ctrl——也会穿过 herdr 和 tmux,交给窗格里的程序。
| 程序 | Ctrl+V | Ctrl+X |
|---|---|---|
| bash 和 zsh | 原样输入下一个键 | 开始一个两键命令(Ctrl+X Ctrl+E 在编辑器里编辑当前命令) |
| vim | 块选择 | 把光标处的数字减一 |
| nano | 下一页 | 退出 |
| emacs | 向下滚动 | 开始一个两键命令(Ctrl+X Ctrl+S 保存) |
| AI 编程智能体(pi、Claude Code、Codex) | 从剪贴板粘贴图片 | — |
如果终端把 Ctrl+V 占用为粘贴,上表每一行的功能都会失去。所以 Linux 终端都把复制和粘贴放在 Ctrl+Shift 上,Term 也一样。出于同样的原因,Ctrl+C 仍然是中断正在运行的命令。
AI 编程智能体把 Ctrl+V 设为“从剪贴板粘贴图片”。它们读取的是它们所运行那台电脑上的剪贴板。通过 SSH 使用时,那台电脑是服务器——而你手机上的剪贴板留在手机里。没有桌面环境的服务器根本没有剪贴板,所以智能体什么也拿不到,也不提示,就这样什么都不做。
这并不是故障:按键确实到了(我们在 herdr 里逐字节核对过),只是它问错了电脑。华为在鸿蒙电脑终端在部分 AI 工具中无法使用 Ctrl+V 粘贴中描述了鸿蒙电脑终端上的同一现象——那里和这里的解决办法一样:改用终端自己的粘贴。
**文字:**用下面任意一种方法粘贴。Term 会把它标记为粘贴发送,所以支持这种方式的程序——智能体都支持——会把多行提示当作一条消息,而不是一行一行地发送。
**图片:**Term 只粘贴文字。用 Term 的 SFTP 标签页把图片上传到服务器,再把路径写进提示里——能粘贴图片的地方,智能体也接受图片路径。
接上键盘后,按 Ctrl+Shift+V——或者 Shift+Insert,Linux 和 Windows 上的粘贴键——Term 会在光标处显示粘贴按钮。点一下,文字就粘贴进去了。
在 herdr 和 tmux 里也一样:这两个快捷键属于 Term,不属于程序。
不止一行?Term 会先在粘贴面板里把内容给你看——你可以检查、也可以修改——然后才发给 shell。粘贴之后,shell 只是把这些行放在提示符上,并不运行,直到你按下回车。
为什么要多点一个按钮,而不是直接粘贴?鸿蒙系统只在你点了系统自带的粘贴按钮时,才允许应用读取剪贴板。在你点之前,Term 看不到你的剪贴板——这也意味着终端会话里的任何东西都无法在背后读取它。
在光标旁边长按然后松开:会出现同样的粘贴按钮。离光标远的地方长按不会有反应,因为文字会粘贴在光标处,而不是手指下。
在使用鼠标的程序里也一样——herdr、开启 mouse on 的 tmux、zellij——在 AI 智能体的提示处,按钮会出现在输入框旁边。按住不动再松开;如果按住后拖动,则是用方向键移动光标。
还有一种不需要按钮的方法:刚复制完内容时,鸿蒙输入法会在按键上方的 From clipboard(来自剪贴板)下显示它,点一下就会输入到光标处。
输入法剪贴板里的多行内容,Term 同样按粘贴处理,和它自己的粘贴按钮一样。
长按一个词,拖动两端的手柄扩大选择,然后选复制。用鼠标或触控板时,直接拖动选择文字。接了键盘也可以按 Ctrl+Shift+C 复制选中的内容。没有选中内容时它什么也不做,绝不会像 Ctrl+C 那样中断程序。
跟踪鼠标的程序——herdr、开启 mouse on 的 tmux、zellij、开启鼠标的 vim——会收到每一次拖动,和桌面终端的做法一样。正因为这样,你才能拖动窗格边框调整大小,或在程序自己里面选择。
如果仍想复制屏幕上的内容,在接了键盘和鼠标或触控板时,按住 Shift 再拖动。这时由 Term 自己选择文字,程序完全收不到这次拖动——和 xterm、iTerm2、Ghostty、kitty、WezTerm 的 Shift+拖动一样。不按 Shift 的拖动仍然交给程序,和以前完全一样。只用触摸时暂时没有这样的方式:在这些程序里长按会改为用方向键移动光标。
程序也有自己的复制。比如 tmux 在复制模式里复制,开启 set-clipboard on 后会通过 OSC 52 把内容发到你手机的剪贴板——Term 会把它传过去。
有些终端用中键点击粘贴。在 Term 里,中键交给使用鼠标的程序,和桌面终端的做法一样。请改用 Ctrl+Shift+V 或 Shift+Insert。