vim
寄存器使用详解
寄存器用于存储
Vim
操作中的特定内容,大多数
normal
命令和部分
ex
命令
都可以指定操作关联的寄存器。寄存器同时也是
Vim
里特殊的变量,因此可以
在命令行和脚本中被访问,实现一些非常有用的功能。
Vim
有很多不同类型的
寄存器,各司其职,各具其能,若得灵活运用,会令编辑工作轻松高效。本文以
Vim
中常见的问题为例,介绍各类寄存器的功能和用法。
1.
编辑操作中的常用功能
:h v_p
:h g@
:h redo-register
Vim
中最常用到的是数字寄存器。当不指定寄存器时,复制操作的内容被保存
到
"0
,删除操作的内容被
”
压
“
到
"1
,同时原先
"1
的内容转到
"2
,依此类推,原
先
"8
转到
"9
,原先
"9
的内容丢失。如果指定操作的寄存器,如
"ayy
和
"bdd
,
则上述的数字寄存器无影响(有些例外情况,详见
Vim
手册)。未命名寄存器
""
保存最近一次复制或删除操作内容,
无论是否指定寄存器。
还有一个特殊的
“
黑
洞
”
寄存器
"_
,当指定其进行删除时,包括
""
在内的任何寄存器都不受影响,当
然,你也没法把掉进黑洞的物质
p
出来。
【例
1
】复制-删除-粘贴
这是经常困扰
Vim
新手的一个问题:当复制了一个词(
yw
)然后准备将另外一
个词替换掉,自然的想法是删除(
dw
)后粘贴(
p
),但
dw
已经将
""
更新为被
删除的词,
p
的内容将不是复制的那个了。有几个办法以供选择:
A.
先
p
后
dw
,问题是要重新定位需要删除的部分。你可以用
gp/gP
试试,它
与
p/P
功能一样,不过光标停留在粘贴出的文字之后,便于随后的删除;
B.
将删除内容转到黑洞(
"_dw
),再
p
;
C.
指定复制内容(
"0p
);
D.
利用
Visual mode
下
p
命令的交换特性(
vwp
),该操作粘贴指定寄存器
的内容,然后删除被选择的文字。这种方法的键盘输入比
B
和
C
都方便些。