技巧61-深入理解Vim寄存器
- 引用一个寄存器
- Vim的删除、复制与粘贴命令都会用到众多寄存器中的某一个。
- 可以同时给命令加"{register}前缀的方式指定要用的寄存器。若不指明,Vim将缺省使用无名寄存器。
- Vim 剪切复制与粘贴对应的术语:delete,yank与put。
一些寄存器的例子
- 把当前单词复制到a寄存器中
"ayiw
- 把当前整行文本剪切至寄存器b中。
"bdd
- 把b寄存器的内容粘贴出来
"bp
无名寄存器("")
-
倘若没有指定要使用的寄存器,Vim将缺省使用无名寄存器。
-
无名寄存器用双引号表示(:h quote_quote)。
-
""p等同于p
-
x、s、d{mition}、c{motion}、与y{motion}命令(以及它们对应的大些命令)都会覆盖无名寄存器中的内容。
-
x和d{motion}应该被理解为剪切命令更合适,它们会覆盖无名寄存器的内容。
复制专用寄存器("0)
- 当使用y{motion}寄存器时,要复制的文本不仅会被拷贝到无名寄存器中,而且也被拷贝到了复制专用寄存器中,后者可以用数字0加以引用。(:h quote0)
- 复制专用寄存器,仅当使用y{motion}命令时才会被赋值。
- 使用 "0P 复制出复制专用寄存器中的内容。
查看寄存器的内容
- 查看所有寄存器的内容
:reg
- 查看复制专用寄存器的内容
:reg "0
有名寄存器("a-"z)
- 查看a寄存器内容
reg a
黑洞寄存器
- 黑洞寄存器可以用下划线引动它。
- 如果只想删除文本却不想覆盖无名寄存器中的内容时,此命令很官用。
系统剪贴板("+) 与选择专用寄存器("*)
- Vim的加号寄存器与系统剪贴板等效,可用+号引用。
- "+p命令将其粘贴到Vim内部。
- 插入模式下用Ctrl-r+将其粘贴到Vim内部。
- 如果在Vim的复制或删除命令之前加入"+,相应的文本将被捕获至系统剪切板。
- X11视窗系统支持另一种被叫做主剪切板(primary)的剪贴板,它保存着上次被高亮选中的文本,可以用鼠标中键把他们粘贴出来。
- Vim的星好寄存器对应主剪贴板,可以用*号加以引用。
- "+ X11剪贴板,用剪切、复制与粘贴命令操作。
- "* X11主剪贴板,用鼠标中键操作。
- X11剪贴板的功能可在编译Vim时被激活或禁用。
- 运行:version命令,然后找到xterm_clipboard关键字,如果前面有个减号,就表示不支持。
其它寄存器
- 可以显式地使用删除与复制命令来设置有名、无名以及复制专用寄存器的内容。
- 只读寄存器:Vim还提供了几组可被隐式赋值的寄存器。
"% 当前文件名
"# 轮换文件名
". 上次插入的文本
": 上次执行的Ex命令
"/ 上次查找的模式
- 以技术上讲,"/寄存器并非只读,可以用:let命令对其进行显式赋值。