喜欢使用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进行粘帖了。
看懂了吗?不懂的请举手!