vim寄存器
转载自
http://www.blogdaren.com/m/?post=1629
数字寄存器
有些寄存器是有特殊作用的如数字寄存器。在介绍数字寄存器前先看一个命令:reg。现在输入这个命令:reg
。有没有看到许多”号开始的数字或字 符呢,这些就是寄存器。这里面有你以前删除的文本和最近复制的文本。
寄存器”0到”9就叫做数字寄存器。 寄存器”0存着上一次复制操作所复制的文本。寄存器”1到”9分别保存着你最近删除的文本。”1的内容总是你 上一次删除的内容。每删除一次这些寄存器的内容就往下传递。刚删除的文本到了”1,而原来的寄存器”1的内容到了”2,原来”2的内容到了”3,……,原 来”9的内容则被丢弃。数字寄存器只保留最近9条删条的文本和一条复制的文本。
字母寄存器
现在看一下今天要讲的第二种寄存器:字母寄存器(named register)。字母寄存器的名称是单个英文字母。可以用这种方式表示一个字母寄存器:”a,”b,…,”z。 同一个字母的大写形式与小写形式表示的是同一个寄存器,但它们在“行为”会有所不同,这点稍后说明。字母寄存器只有在用户指定时才被使用。
一般模式(normal mode)下要访问寄存器只要在使用复制和删除指令y和d时,在前面加上寄存器的名称即可。比如要将当前行及随后两行(1+2=3)复制到寄存器c 中:”c3yy。要将刚保存到寄存器c的内容“粘贴”出来:”cp。数字寄存器也是一样的使用方式,要将数字寄存器3的内容粘贴出来:”3p。
提示:可是怎么知道那个寄存器有自己想要的内容呢?使用:reg
或:display
。在命令后加上寄存器名称则显示相应寄存器的内容。
字母寄存器的名称大写时有特殊用途。当我们使用大写的寄存器进行复制或删除文本时,寄存器原来的内容会被保留, 刚删除或复制的内容则附加到原来内容的后面 。如:`”Cdd‘时当前删除行会添加到寄存器c原有内容的后面。大小写的寄存器仅在复制和删除时有区别。而当使用p时,大小写寄存器名的作用是一样的。
其他寄存器
“”
无名寄存器。保存最近一次复制或删除的文本。就是p命令默认使用的寄存器。
“-
短删除寄存器(The small delete register)。事实上刚删除的文本并不一定被送到数字寄存器,如果删除的文本不含换行符(不足一整句)则文本被送至这个寄存器。如x、d2h这两条 命令删除的文本都会被送到这个寄存器。注意下在这条命令虽然删除了一整行的文本但因不含换行符所以也被送到这个寄存器`0d$‘。
“: “. “% “#
只读寄存器。它们分别用来保存最近一次在命令行窗口使用的命令、最近一次插入的文本、当前编辑的文件名、当前的替代文件名。
“=
表达式寄存器。
“* “+ “~
选择与拖放的寄存器。在Windows中这几个寄存器就是剪贴板。在Linux中它们也是剪贴板——但这几个寄存器是有所区别的。
“_
黑洞寄存器
删除操作会影响现有数字寄存器的内容。前一个数字寄存器的值传给后一个数字寄存器,”9的内容被丢弃,新删除的文本则放入”1。这至少有两个直接的影响, 一是”9的内容被丢弃;二是寄存器中文本的位置都发生了变化。而复制操作会改变”0的值。如果你不希望删除或复制的操作影响数字寄存器的话就使用这个寄存器。使用这个寄存器进行删除或复制的内容都会被丢弃——这还可以提高一点速度节省一点空间。
“/
搜索式样寄存器。保存上一次搜索所使用的式样。注意这也包括了s命令中所使用的搜索式样。
寄存器相关命令
前面已经说了一般模式下下的各种x、d、y、p命令都可以与寄存器一起使用,如”ayy。现在看一下在命令窗口中(或Ex模式)下怎么访问寄存器。
命令行中复制、删除和粘贴分别是:y
、:d
、:pu
。 寄存器的使用方式是直接在上述命令后面加上寄存器的名称——不需要在寄存器前加入”号。如:
:2,4y a
将第2至4行的文本复制到寄存器a中。
:’<,’>d A
将选中的行删除并将其内容附加到寄存器a中。
:pu! a
将寄存器a的内容粘贴到当前行之前。 (!是之前,不加是之后)
Summary
- “” 是上次复制or删除的, “0是上次复制的
- normal模式下使用寄存器