vim跨文件复制粘贴需用系统剪贴板寄存器“*”或“+”,如“*y”复制、“*p”粘贴;若不支持,可装vim-gtk3或用临时文件中转。

在 Linux 中用 Vim 跨文件复制粘贴,核心在于理解 Vim 的寄存器机制——默认的 "(无名寄存器)只在当前文件内有效,而真正打通终端、GUI 应用和多个 Vim 实例的是系统剪贴板寄存器 "* 和 "+。
用 "*y 和 "*p 直接对接系统剪贴板
这是最常用、兼容性最好的方式,适用于大多数桌面环境(GNOME、KDE、XFCE 等):
- 在第一个文件中,进入可视模式(
v字符级 /V行级 /Ctrl+v块级),选中内容后输入"*y(注意引号和星号是连写的),就把内容存入系统选择区(primary clipboard) - 切换到第二个文件,把光标移到目标位置,输入
"*p即可粘贴 - 如果想用 Ctrl+C/V 风格的剪贴板(clipboard),则用
"+y和"+p;多数现代 Vim 默认同时支持*和+,但+更接近传统“复制粘贴”行为 - 确认是否可用:在 Normal 模式下执行
:reg *或:reg +,能看到对应寄存器内容即表示就绪
若 "+" 寄存器不存在,需安装增强版 Vim
终端里运行 vim --version | grep clipboard,如果输出中没有 +clipboard,说明当前 Vim 编译时未启用剪贴板支持:
- Ubuntu/Debian:运行
sudo apt install vim-gtk3(推荐)或vim-gnome - CentOS/RHEL:安装
vim-enhanced包通常已含 clipboard 支持 - 安装后重启终端再打开 vim,
:reg +就能显示内容了
不依赖 GUI 的纯终端方案:用文件中转
在无图形界面(如服务器 SSH 连接)或 clipboard 不可用时,可借助临时文件同步两 Vim 会话:
- 在第一个文件中选中内容,执行
:w! ~/.vimclip把选中行写入临时文件 - 切换到第二个文件,在目标位置执行
:r ~/.vimclip将其读入当前光标下方 - 为省去手动路径,可在
~/.vimrc添加快捷映射:
vmapcp:w! ~/.vimclip
nmapcp:r ~/.vimclip
之后只需选中文本按cp,切过去按cp就完成粘贴
小技巧:快速复制整行或大段文本
跨文件操作时,效率常取决于如何快速选取:
- 复制整行:光标在该行任意位置,直接
"*yy(或"+yy) - 复制多行:比如第 10–20 行,命令模式输入
:10,20y *(y *表示 yank 到*寄存器) - 从外部程序粘贴进 Vim:在终端里用鼠标中键(X11 primary)或 Ctrl+Shift+V(clipboard),然后在 Vim 正常模式下按
Shift+Insert即可











