ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vim使用系统剪切版

2022-02-17 18:00:39  阅读:217  来源: 互联网

标签:gvim 系统 vim clipboard usr 寄存器 vimx 剪切 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

结果:

-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 包含那些命令:

$ 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

$ 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冲突了,所以可以选择使用其它的快捷键,这里使用前置键来配置

"绑定复制/粘贴快捷键
let mapleader=";"
vmap <leader>c "+y

nmap <leader>v "+p
imap <leader>v <esc>"+p

标签:gvim,系统,vim,clipboard,usr,寄存器,vimx,剪切,Vim
来源: https://www.cnblogs.com/heyb7/p/15905770.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有