问题描述
gVim 使用默认 y(yank)命令进行复制时,只是将内容复制到 Vim 的默认寄存器("0 或 "),不会自动同步到 Windows 系统剪贴板,这在 Windows 系统中使用时会带来一些麻烦。
解决办法
1. 临时联动复制 / 粘贴:
如果只是临时性的为了让 Vim 内复制的内容联动到剪贴板,在复制时手动指定 Vim 使用的寄存器即可,+ 寄存器即指系统剪贴板,在所有需要使用 y 命令或 p 命令进行复制粘贴操作前先按“"+”,比如:
复制全文到剪贴板:
gg"+yG
操作命令详解:
gg:(光标)跳到文件开头;
“+yG:”+,指定寄存器为系统剪贴板;yG,从当前位置(开头)到文件末尾(G)进行复制(y)。
粘贴剪贴板内容到 gVim:
"+p
操作命令详解:
“+p:”+,指定寄存器为系统剪贴板;p,粘贴。
2. 临时输出到剪贴板:
除了使用寄存器的方式,vim 还支持通过管道直接输出到 Windows 系统剪贴板。不过不太推荐这种方式,因为如果文本中含有中文等非英文字符时可能会出现乱码(将 cmd 编码代码页由默认的 GBK 改为 UTF- 8 可解决乱码问题,感兴趣的请自行探索设置,本文略)。
输出全文到剪贴板:
:%w !clip
操作命令详解:
%:表示全文;
w:写入;
!clip:重定向到 Windows 系统的 clip.exe 程序。
3. 永久性设置默认寄存器为剪贴板:
如果把 gVim 当做 Windows 系统上文本编辑主力工具,希望所有复制 / 粘贴的内容都能快速与系统剪贴板联动,可以通过 _vimrc 配置文件进行设置:
路径:C:\Users\< 用户名 >_vimrc #如无该文件,可手动创建
输入如下代码:
set clipboard=unnamed
或者
set clipboard=unnamedplus
备注:unnamed 的兼容性更好,推荐优先使用;如无效,则再尝试 unnamedplus。
保存 _vimrc,退出并重新打开 gVim 程序,就可以与系统剪贴板进行文本内容双向高效复制粘贴了。
