喜欢使用vim的朋友都知道, vim拥有强大的寄存器功能 ,可以满足一些功能上的需求, 比如复制文本到系统剪贴板上,以便外部使用, 或者从外部复制文本粘帖到vim文本中。
使用vim的过程中会发现,用 y 拷贝的文本是没办法在vim外部使用的, 同理在外部复制的文本也没办法直接粘帖到vim文本中。这时, 可以使用寄存器功能, 选中需要复制的文本, 输入 “+y, 然后在外部就可以右键粘帖了。 同理在外部复制的文本,也可以通过 ”+p 来粘帖到vim文本中,当然也可以通过 shift + insert来粘帖。
不过老版本的vim是不支持此功能的, 可以通过
sudo apt-get install vim-gui-common
安装后即可以使用此功能。
除此之外,寄存器还有另外的一些功能。比如, 现在文件中有两行数据, 如下图:
此时将光标停在第一行, 然后输入shift + v选中第一行, 输入 y 复制文本。接着,将光标移到第二行,输入 dd 将第二行删掉, 此时输入 p 粘帖刚才复制的文本, 发现了什么??!!! 是不是发现粘帖的内容竟然是刚才删除的那一行 “echo $RMOUT” 。
这是因为vim中会将你的动作自动记录到寄存器中, 以方便后续调用。
那么问题来了, 如何调出刚才复制的文本呢?
退出vim编辑模式, 然后按 :进入底行模式, 输入reg, 看到了什么?
看到了吧? ““ 代表的就是你最近的一次操作的文本,即dd时候删除的那一行, ”0 代表的就是上一次操作的文本。那么很简单了, 先按任意键退出这个查看寄存器的界面, 然后在需要粘帖之前复制的文本的地方输入 “0p 即可。就是这么简单!!!
还可以在.vimrc中添加如下配置:
" ctrl c and v to clipboard
vmap <C-c> "+y
nmap <C-v> "+p
这样就可以在vim下使用CTRL + C进行复制, 用CTRL + V进行粘帖了。
看懂了吗?不懂的请举手!!