分类: LINUX
2015-09-11 14:42:48
抛出一个问题:每次打开Vim,想找一段文本来练练手,于是打开网页copy了一段,问题来了,怎样粘贴到vim的编辑器里头去呢?如果你还在CTRL+v的话,说明你还无法割舍Windows,就像东方姑娘忘不了令狐冲):这里暂且告诉你如何粘贴:SHIFT+INSERT 两个键联合起来。再来看下面的原理
寄存器是Vim用来存储文件的临时空间,当使用命令y(yank)或d(delete)复制删除文本时,该文本就会被保存在寄存器中,通过p(put)命令插入刚删除或复制的内容。vim的寄存器分为不同的种类:
在normal模式下输入:reg
,您是否看到很多“(双引号)开头的数字了呢,这些都是寄存器,(如果暂时没看到,那么在对文本做几个操作,比如:dd,yy
等),这些寄存器里保存了最近删除的和复制的文本。
数字寄存器有十个,分别是:"0,"1,"2... "9
(注意:数字前有个双引号),寄存器"0
保存上一次复制(y)操作的文本,"1到"9寄存器保存最近9次删除的文本行(注意这个“行”字),"1保存的内容是最最近一次删除的内容(也就是说最后一次执行删除命令保存的内容)"2保存的是倒数第二次删除的内容,依此类推,直到"9,如果又有新的操作,那么"9的内容将会被"8的内容替换,先前”9的内容将被丢弃。
那么p(put)命令粘贴是哪个寄存器中的内容呢?有时候是粘贴的是"1寄存器的,有时粘贴的是"0寄存器中的,但是总的原则就是粘贴最近一次删除或者复制的内容,如果删除是最近的一次,就是粘贴"1的,也就是粘贴刚刚删除的文本,如果复制是最近的一次操作,那么粘贴的内容是"0中的,也就是粘贴刚刚复制的内容。
"a,"b,"c...
都是字母寄存器,也许你执行:reg
的时候看不到这些命令,不要紧,稍后就有了。之前粘贴我们用的都是p命令,如果我想粘贴其他寄存器里面的内容呢,你想到了吗?答案就是:寄存器的名称+p。现在我们新建一个字母寄存器,把当前三行保存到"a
寄存器中去,具体操作如下:在normal模式下输入"a3yy
,这样当前三行就保存在"a中去了,粘贴同样在normal模式下,"3p
即可。如果是大写字母的寄存器,如执行:"Cdd
:他的作用是把当前行删除,再把内容追加到"c寄存器中,也就是说字母寄存器没有大写之分,只是功能上有区别,大写就是追加,小写是替换。
""
:无名寄存器,p命令粘贴的内容,保存最近一次删除或复制的内容。
“-
:(-是个减号)小删除寄存器(small delete register),前面说过要您注意这个”行“字,也就是说并不是所有删除的文本都会保存在数字寄存器中,如果你删除的只是一个单词或字母: dw
或者x
,那么这个单词并不会保存在"1寄存器中,而是保存在"-
寄存器里面。所有不包含换行符的删除都会保存在此寄存器中。
"*
:这个就是系统寄存器喽,最开始的问题的第二个答案知道了吧
当然还有一些寄存器,这里就不一一介绍了。