Vim使用系统剪切版

vim寄存器

vim 中的复制、删除的内容都会被存放到默认(未命名)寄存器中,之后可以通过粘贴操作读取默认寄存器中的内容。寄存器是完成这一过程的中转站,vim 支持的寄存器非常多,其中常用的有 a-zA-Z0-9+"

寄存器用引号来表示,在vim中,输入:reg 查看vim的寄存器,其中:

  • "0-"9 : 表示数字寄存器,其中 "0 缓存最近一次复制的内容. "1到"9 缓存最近9次的删除内容
  • "a-"z"A-"Z : 表示用户寄存器,Vim 不会读写这部分寄存器
  • "" : 两个引号,表示未命名的寄存器,是 Vim 的默认寄存器,例如删除、复制等操作的内容都会被保存到这里。
  • ": : 表示最后一次执行的命令
  • "% : 表示当前文件名
  • "+ : 剪切板寄存器,关联系统剪切板,保存在这个寄存器中的内容可以被系统其他程序访问,也可以通过这个寄存器访问其他程序保存到剪切板中的内容。
  • "* : 对应图形界面中鼠标框选的内容(可以用鼠标中键黏贴)
  • "- : 行内(删除)寄存器, 缓存的是在一行的内部删除的内容, 即少于一行的删除内容

"*和"+的区别

在启用了 +clipboard 的情况下, "* 寄存器表示的是被选择的内容. 这个内容可以是你用鼠标选择的, 也可以是你用 visual模式下选择的.
但是, "+ 寄存器只能将你在 visual模式下 选择的内容复制到系统剪贴板上

vim使用系统剪切板

首先查看vim是否支持剪切板: vim --version | grep clipboard

结果:

复制代码
  • 1
  • 2
-clipboard +jumplist +persistent_undo +vartabs +eval +mouse_gpm +syntax -xterm_clipboard

clipboard前面有一个小的减号,说明不支持。

让vim支持系统剪切板

安装vim-X11,可以让vim支持系统剪切板,安装vim-X11后,会安装一个vim的图形程序,即gvim, 但是这个一般都不习惯使用。(gvim也同样可以使用vim的各种插件,包括 NERDTree等)

查看 vim-X11 包含那些命令:

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
$ rpm -ql vim-X11 /usr/bin/evim /usr/bin/gex /usr/bin/gview /usr/bin/gvim /usr/bin/gvimdiff /usr/bin/gvimtutor /usr/bin/vimtutor /usr/bin/vimx /usr/share/applications/gvim.desktop /usr/share/icons/hicolor/16x16/apps/gvim.png /usr/share/icons/hicolor/32x32/apps/gvim.png /usr/share/icons/hicolor/48x48/apps/gvim.png /usr/share/icons/hicolor/64x64/apps/gvim.png /usr/share/icons/locolor/16x16/apps/gvim.png /usr/share/icons/locolor/32x32/apps/gvim.png /usr/share/man/man1/evim.1.gz /usr/share/metainfo/gvim.appdata.xml

vim-X11添加一些附加的命令, 比如 evim, gvim等, 最重要的是这个 vimx命令, 他就是 在vim的基础上增加x系统的支持. 即vimx 是命令行下的vim支持系统剪贴板的版本.

查看 vimx 是否支持 clipboard

复制代码
  • 1
  • 2
  • 3
$ vimx --version | grep clipboard +clipboard +jumplist +persistent_undo +vartabs +eval +mouse_gpm +syntax +xterm_clipboard

可以看到,vimx是支持 clipboard的。

为了能够在使用vim时运行的是vimx,可以给vim设置一个别名,让执行vim时实际执行的是vimx

在.bashrc中, 加上一个 alias: alias vim=/usr/bin/vimx

虽然安装了 vim-X11, 但是 /usr/bin/vim 和 /usr/bin/vimx 实际上还是 两个互补相关的 应用, 在原来的vim中, 仍然并不支持 剪贴板, 查看vim --version | grep clipboard, 仍然还是没有启用剪贴板的特性。

只有 使用 vimx 才能启用 +clipboard, 和 +xterm_clipboard 特性。

vim绑定复制粘贴快捷键

不使用快捷键的时候,复制和粘贴需要使用命令

复制 粘贴
"+y "+p 或者 "+gp

为了方便使用,可以把复制粘贴命令绑定到快捷键上

在vim中有以下几种按键绑定的模式:

  • map : 正常模式,可视化模式和运算符模式可用
  • nmap :正常模式可用
  • vmap :可视化模式可用
  • omap :运算符模式可用
  • map! :插入模式和命令行模式可用
  • imap :插入模式可用
  • cmap :命令行模式可用

在设置快捷键的时候,需要注意映射模式:

  • 如果是复制到系统剪贴板, 要设置vmap, 或者是设置成 map。 !! 因为, 你要复制到系统剪贴板, 需要在visual模式下, 你用nmap在normal模式下就无效. 其中的map 会自动检查, 在vmap下有效, 在nmap下无效!
  • 反之, 如果是从系统剪贴板粘贴到vim中, 则要设置成 在nmap下粘贴, 或者甚至可以在 insert模式下直接粘贴. 但是不能设置成vmap, 因为你在 粘贴 系统剪贴板的内容到vim的时候, 不可能是vmap visual模式. 通常还是normal模式或 insert模式

在 ~/.vimrc中绑定快捷键

可以把复制绑定成 ctrl c,粘贴绑定成 ctrl v,但是ctrl v和可视化模式的 ctrl v冲突了,所以可以选择使用其它的快捷键,这里使用前置键来配置

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
"绑定复制/粘贴快捷键 let mapleader=";" vmap <leader>c "+y nmap <leader>v "+p imap <leader>v <esc>"+p
posted @   heyb7  阅读(830)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开