8月更文挑战第 15天 | Vim 入门 10

105 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

Vim寄存器

  1. 未命名寄存器(The Unnamed Register) 

当使用y命令复制文本,或使用d、c、s、x等命令删除文本时,文本将自动被放入"" 未命名寄存器。

  1. 数字寄存器(The Numbered Registers) 

"0 包含最近复制的文本,实时刷新。

数字寄存器"1"2"3"4、····"9可以看作是删除历史, 你可以从中找到早先删除的文本。比如使用了三次dd命令,那么这三行文本被分别存放在寄存器1,2,3中,可以通过命令"1P,"2P,"3P将这些文本再粘贴回来。

  1. 行内删除寄存器(The Small Delete Register) 

当删除文本少于一行时,内容将被放入"- 寄存器,除非指定了其它寄存器。

  1. 命名寄存器(The Named Registers) 

当文本被放入以小写字母命名的寄存器(例如 "a )时,该寄存器原有的内容将被覆盖;

而使用以大写字母命名的寄存器(例如 "A )时,将会把文本追加到原有内容之后。

  1. 只读寄存器(The Read-Only Registers) 

只能从只读寄存器中读取并粘贴内容,而不能写入。

"% 包含当前文件名;". 包含最近插入的文本;": 包含最近执行的命令行。

  1. 轮换缓冲区寄存器(Alternate buffer register)

交替文件寄存器 "#  存储着当前 Vim 窗口(Window)的交替文件。而交替文件(alternate file)是指缓存中的上一个文件,可通过 Ctrl+^ 来切换上一文件与当前文件。

  1. 表达式寄存器

表达式寄存器 "= 主要用于计算 Vim 脚本的返回值,并插入到文本中。

当我们键入 "= 后光标会移动到命令行,此时我们可以输入任何 Vim 脚本的表达式。

例如 3+2,按下回车并且 p 则会得到 5,这在我们调试 Vim 脚本时非常有用,比如调用一个函数看它是否有正确的返回值。

  1. 选择和拖拽寄存器

选择和拖放寄存器包括 "*, "+, 和 "~,这三个寄存器的行为是和 GUI 相关的。

"*"+ 在 Mac 和 Windows 中,都是指系统剪切板(clipboard),例如 "*yy 即可复制当前行到剪切板。 以供其他程序中粘贴。其他程序中复制的内容也会被存储到这两个寄存器中。

而在 X11 系统中(绝大多数带有桌面环境的 Linux 发行版),"*"+ 这二者是有区别的:

  • "* 指 X11 中的 PRIMARY 选区,即鼠标选中区域。在桌面系统中可按鼠标中键粘贴。
  • "+ 指 X11 中的 CLIPBOARD 选区,即系统剪切板。在桌面系统中可按 Ctrl+V 粘贴。
  1. 黑洞寄存器

黑洞寄存器 "_,所有删除或拷贝到黑洞寄存器的文本将会消失。

这是为了在删除文本的同时不影响任何寄存器的值,"_ 通常用于 Vim 脚本中。

  1. 搜索寄存器

搜索寄存器 "/ 用于存储上一次搜索的关键词。Vim 中如何进行搜索呢? 在普通模式下按下 / 即进入 search 模式,输入关键字并按下回车即可。

该寄存器是可写的,例如 :let @/ = "harttle" 将会把 "harttle" 写入该寄存器。 下次搜索时不输入搜索词直接回车便会搜索 "harttle"