类别 | 符号 | 描述 |
---|---|---|
未命名寄存器 | " | 上次复制或删除的文本 |
数字寄存器 | 0-9 | 文本删除历史 |
短删除寄存器 | - | 删除少于一行的文本 |
命名寄存器 | a-z,A-Z | 存放文本 |
只读寄存器 | % | 当前文件名 |
只读寄存器 | # | 交替文件的名字 |
只读寄存器 | . | 上次插入的文本 |
只读寄存器 | : | 上次执行的命令 |
表达式寄存器 | = | 返回表达式结果 |
选择寄存器 | * | 系统剪切板 |
系统剪切板寄存器 | + | 系统剪切板(x11) |
拖拽寄存器 | ~ | 拖拽的文本 |
黑洞寄存器 | _ | 永久删除的文本 |
搜索模式寄存器 | / | 搜索模式 |
未命名寄存器(The Unnamed Register)
当使用y命令复制文本,或使用d、c、s、x命令删除文本时,文本将自动被放入""
未命名寄存器。即使你在复制或删除文本时,已经指定了寄存器(例如使用"xdd
命令),这些文本也将会被同时放入"x
和""
寄存器。
数字寄存器(The Numbered Registers)
"0
始终存放最近删除的文本。"1
也包含上次删除的文本。区别在于:"0
不断被删除的文本所覆盖;而如果删除文本时,指定了寄存器或者文本小于一行,那么"1
将不会被更新。数字寄存器1-9可以看作是删除历史,你可以从中找到早先删除的文本。比如你使用了三次dd
命令,那么这三行文本被分别存放在寄存器1,2,3中,可以通过命令"1P
,"2P
,"3P
将这些文本再粘贴回来。
短删除寄存器(The Small Delete Register)
当删除少于一行的文本时,除非指定了某个寄存器,否则这些内容将会被放入"-
短删除寄存器中。
命名寄存器(The Named Registers)
当文本被放入以小写字母命名的寄存器(例如"a
)时,该寄存器原有的内容将被覆盖;而使用以大写字母命名的寄存器(例如"A
)时,将会把文本追加到原有内容之后。
只读寄存器(The Read-Only Registers)
你只能从4个只读寄存器中粘贴内容,而不能放入文本。"%
包含当前文件名;"#
包含交替文件名;".
包含最近插入的文本;":
包含上次执行的命令行。
表达式寄存器(The Expression Register)
当我们输入"=
,就会在Vim底部显示一个以"="开始的提示行,可以在这里输入表达式并按回车键确认。随后使用命令p将表达式的结果粘贴到文本中。例如要在文本中插入38*56的值,首先进入命令模式,输入"=
,在屏幕底部的提示行中输入"38*56"并按回车,然后输入命令p,这样就可以将计算结果插入文本中了。在表达式寄存器中,不仅可以使用通常的算术运算符,还可以使用Vim特定的函数和运算符。例如通过表达式寄存器来得到环境变量的值(例如"=$HOME)。如果没有输入任何表达式而直接按回车键,那么Vim将执行最近使用过的表达式。
选择和拖拽寄存器(The Selection and Drop Registers)
有3个寄存器用于保存选中的文本:"+
用于访问系统剪切板。在Windows下,"*
和"+
相同;在Linux下,"*
包含选中的文本,"+
包含复制的文本。使用"*y
命令,可以将当前选中的文本复制到系统剪切板中。而"+p
命令,则可以粘贴系统剪切板中的内容。通过剪切板寄存器,能够在不同的Vim编辑器或者是其他应用程序之间,进行文本交换。"~
包含上次从其它应用程序拖拽到Gvim中的文本。
黑洞寄存器(The Black Hole Register)
任何放入"_
中的文本都将不复存在。如果想要永久删除某些文本而不是将他放入1-9中的某个寄存中,就可以使用黑洞寄存器。例如:命令dd
将删除一行文本并将其放入寄存器1中;而命令"_dd
则将该行文本放入黑洞寄存器中,这些文本也就会永久消失了,而寄存器1中的文本会保持不变。
搜索模式寄存器(Search Pattern Register)
当你通过/
命令进行搜索时,所使用的模式将自动被放入"/
寄存器。
普通寄存器使用
- normal mode 下键入
:reg
,将能看到数字寄存器,短删除寄存器和只读寄存器的内容. - 使用
"
加寄存器名称使用寄存器,比如粘贴出寄存器9的内容:"9p
,将dd
掉的内容放到寄存器C中:"Cdd
使用表达式寄存器
- 在insert mode 下键入
<C-r>=
,然后输入表达式,就能在当前位置放置你表达式计算后的内容. - 在normal mode 下键入
"=
,将会在状态栏出现一个=
,继续输入表达式,按下回车,接着就可以使用p
来粘贴寄存器的内容了.