‹ 指南

终端里的复制与粘贴 v26.6.0+

为什么在终端里 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 属于你的程序

在终端里,Ctrl+V 和 Ctrl+X 不是复制粘贴,而是普通按键,它们的含义由你正在运行的程序决定。Term 会像桌面终端一样把它们原样发出——无论来自实体键盘,还是按键栏上的 ctrl——也会穿过 herdr 和 tmux,交给窗格里的程序。

Term 里 herdr 标签页中的 nano 正在编辑 notes.txt;按下按键栏的 ctrl 再按键盘上的 x 后,nano 询问 Save modified buffer?,选项为 Yes、No 和 Cancel。
在 herdr 里:先按按键栏的 ctrl,再按 x。nano 收到了它的 Ctrl+X,退出前询问是否保存。
程序Ctrl+VCtrl+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 没反应

AI 编程智能体把 Ctrl+V 设为“从剪贴板粘贴图片”。它们读取的是它们所运行那台电脑上的剪贴板。通过 SSH 使用时,那台电脑是服务器——而你手机上的剪贴板留在手机里。没有桌面环境的服务器根本没有剪贴板,所以智能体什么也拿不到,也不提示,就这样什么都不做。

这并不是故障:按键确实到了(我们在 herdr 里逐字节核对过),只是它问错了电脑。华为在鸿蒙电脑终端在部分 AI 工具中无法使用 Ctrl+V 粘贴中描述了鸿蒙电脑终端上的同一现象——那里和这里的解决办法一样:改用终端自己的粘贴。

**文字:**用下面任意一种方法粘贴。Term 会把它标记为粘贴发送,所以支持这种方式的程序——智能体都支持——会把多行提示当作一条消息,而不是一行一行地发送。

**图片:**Term 只粘贴文字。用 Term 的 SFTP 标签页把图片上传到服务器,再把路径写进提示里——能粘贴图片的地方,智能体也接受图片路径。

用键盘粘贴:Ctrl+Shift+V 或 Shift+Insert

接上键盘后,按 Ctrl+Shift+V——或者 Shift+Insert,Linux 和 Windows 上的粘贴键——Term 会在光标处显示粘贴按钮。点一下,文字就粘贴进去了。

打开了 herdr 的 Term:标题栏上显示 Ctrl + Shift + V 提示,herdr 窗格里 shell 提示符的光标下方出现粘贴按钮。
在 herdr 里:Ctrl+Shift+V 在标题栏上显示自己的名称,粘贴按钮出现在光标处。

在 herdr 和 tmux 里也一样:这两个快捷键属于 Term,不属于程序。

不止一行?Term 会先在粘贴面板里把内容给你看——你可以检查、也可以修改——然后才发给 shell。粘贴之后,shell 只是把这些行放在提示符上,并不运行,直到你按下回车。

两个画面:Term 的粘贴面板显示 cd ~/app 和 git pull --rebase,旁边是粘贴按钮;之后这两行出现在 herdr 的 shell 提示符上,高亮显示,尚未运行。
剪贴板里的两条命令:先在粘贴面板里核对,再停在 herdr 的提示符上——高亮显示,没有运行。

为什么要多点一个按钮,而不是直接粘贴?鸿蒙系统只在你点了系统自带的粘贴按钮时,才允许应用读取剪贴板。在你点之前,Term 看不到你的剪贴板——这也意味着终端会话里的任何东西都无法在背后读取它。

用触摸粘贴

在光标旁边长按然后松开:会出现同样的粘贴按钮。离光标远的地方长按不会有反应,因为文字会粘贴在光标处,而不是手指下。

在使用鼠标的程序里也一样——herdr、开启 mouse on 的 tmux、zellij——在 AI 智能体的提示处,按钮会出现在输入框旁边。按住不动再松开;如果按住后拖动,则是用方向键移动光标。

还有一种不需要按钮的方法:刚复制完内容时,鸿蒙输入法会在按键上方的 From clipboard(来自剪贴板)下显示它,点一下就会输入到光标处。

herdr 窗格中 shell 提示符的两个画面:鸿蒙输入法在按键上方的 From clipboard 下显示 tail -f /var/log/nginx/error.log;点它之后,这条命令出现在提示符上。
在 herdr 里:输入法在 From clipboard 下给出刚复制的命令,点一下就输入到光标处。

输入法剪贴板里的多行内容,Term 同样按粘贴处理,和它自己的粘贴按钮一样。

复制

长按一个词,拖动两端的手柄扩大选择,然后选复制。用鼠标或触控板时,直接拖动选择文字。接了键盘也可以按 Ctrl+Shift+C 复制选中的内容。没有选中内容时它什么也不做,绝不会像 Ctrl+C 那样中断程序。

在 herdr、tmux 等使用鼠标的程序里

跟踪鼠标的程序——herdr、开启 mouse on 的 tmux、zellij、开启鼠标的 vim——会收到每一次拖动,和桌面终端的做法一样。正因为这样,你才能拖动窗格边框调整大小,或在程序自己里面选择。

如果仍想复制屏幕上的内容,在接了键盘和鼠标或触控板时,按住 Shift 再拖动。这时由 Term 自己选择文字,程序完全收不到这次拖动——和 xterm、iTerm2、Ghostty、kitty、WezTerm 的 Shift+拖动一样。不按 Shift 的拖动仍然交给程序,和以前完全一样。只用触摸时暂时没有这样的方式:在这些程序里长按会改为用方向键移动光标。

打开了 herdr 的 Term:按住 Shift 拖动,在 herdr 窗格里选中了目录列表的五行,两端有选择手柄,上方是 Term 的复制、全选和取消菜单。
在 herdr 里:按住 Shift 拖动由 Term 选择,而不是 herdr,选中内容上方出现复制菜单。

程序也有自己的复制。比如 tmux 在复制模式里复制,开启 set-clipboard on 后会通过 OSC 52 把内容发到你手机的剪贴板——Term 会把它传过去。

中键不粘贴

有些终端用中键点击粘贴。在 Term 里,中键交给使用鼠标的程序,和桌面终端的做法一样。请改用 Ctrl+Shift+V 或 Shift+Insert。