vim很强大,时常都会有新的惊喜和发现。今天解决的是两个关于剪贴板的问题。
1、怎样在X系统与vim进行拷贝粘贴操作(即vim与系统剪贴板的交流)?
2、拷贝某段文本A,覆盖文本B(或者用d或x删除B)。之后再使用p进行粘贴,就变成了B的内容,如果希望继续粘贴A,怎么办?
首先来点基础,vim有多个剪贴板,其中就包括了系统剪贴板。使用命令:reg可以看到各个剪贴板的内容。其中“”表示当前使用的剪贴板,“0-9是历史剪贴板,“#就是系统剪贴板了(你可以在系统里拷贝一些东西,看是不是会出现在“#剪贴板里)。在vim中使用y可以把内容拷贝到“”号剪贴板,继续y会把新的东西放入“”,而原来“”的东西就会被压入“0-9的各个历史剪贴板中。X11系统下还有一个“*的剪贴板对应中键拷贝粘贴,windows不知道有没有。
解决第一个问题:
“+y 把选中内容拷贝到”+号剪贴板,即系统剪贴板
“+p 把系统剪贴板的内容粘贴到vim,这一个用shift+insert也可完成
解决第二个问题:
“0p 可以把已经被挤到”0剪贴板的内容A重新粘贴出来
嫌长的做一个map,映射到某个功能键或组合就方便了。
载自:http://www.wentrue.net/blog/?p=91
注意事项: 在vim中输入:reg就会显示个剪贴板的内容,如果看不到"+ 这个剪贴板,那还需要安装vim增强功能
- sudo apt-get install vim-gui-common
其实我个人认为作者讲得不是很好,我研究vim剪贴板就两个目的:
1) 将vim中的数据复制到系统剪贴板
2)粘帖上上次复制的内容( 我复制了一行,现在删除一行,想要粘帖之前复制而不是现在删除的这一行)
问题1:
先选中要复制的数据 "+y( 1.输入“号 2. 输入+ 号,3.输入字母y, + 代表系统剪贴板,意思就是将当前的内容定向复制到系统剪贴板),要使用刚复制的内容,只需要ctrl+v了,很方便。
顺便提一下,将系统剪贴板的内容复制到vim中,只需要在normal模式下输入"+p即可,你应该懂的。
问题2:
默认复制和粘帖都发生在"0 剪贴板中,我们只要将数据复制到其他剪贴板中就不会被马上替换掉了,使用方法:先选中要复制的内容,然后“2y(以2号剪贴板为例)就复制到2号剪贴板中了,粘帖的时候只需要在normal模式输入"2p即可。