Vim 寄存器

寄存器这个概念,在之前的Vim复制、删除章节已经和大家提过。想必大家应该还有印象。我们根据那节场景讲了无名寄存器和复制专用寄存器。本节,我们就更加深入了解寄存器的概念和使用场景。

1. 寄存器概念

Vim 中的寄存器简单来说就是用于保存文本的容器。我们对不同场景划分了不同的寄存器,或者说容器。主要用于 Vim 使用中临时保存一些数据。

之前章节中我们我们提到过这个概念,并且对 Windows 和 Vim 编辑器之间不同点做了对比。它们之间最大不同就在于寄存器的概念。Vim 分门别类地划分了几十组不同的寄存器或者容器来临时保存文本。Windows 系统只使用单一的剪切板

1.1 寄存器常用种类

Vim 寄存器有很多种,这里我们只会讲解四种常用的寄存器。其他大家可以在 Vim help(:h reg)中了解即可。

类型 含义 表达式 举例 特点
无名寄存器 默认寄存器 “” “” p = p 会被最后一条覆盖
数字寄存器 "+{0-9}缓存最近10次操作 “{0-9} "1P 0是复制专用,1-9用于常规删改记录
有名寄存器 26个英文字母命名 "[a-z]/[A-Z] "ayw 赋予具体字母名字
黑洞寄存器 有去无回 "_ "_dw 只删除不保存,相当于windows 中的删除

2. 实战案例

寄存器使用相关命令:

命令 含义
:reg 查看所有寄存器
:reg 寄存器名字 查看具体寄存器

使用寄存器:"{reg_类型}+命令: 无论是存入寄存器还是引用寄存器内容都是这个公式。我们来具体看下。

2.1 无名寄存器

这个是默认寄存器,顾名思义就是没有名字。使用双引号表示——"".我们的删除、复制等操作都默认存在这里。当然复制除了默认存在无名寄存器还会存入专用的复制寄存器,后面会提到。

删除操作

可以看到当我们删除了resource 后,通过查看寄存器可以看到在无名寄存器 ——""中包含了我们删除的字符串resource

复制操作

可以看到当我们复制字符串dataspace后,再查看寄存器时候发现两个变化:

  • 首先无名寄存器中之前存入的 resource 被 dataspace 覆盖了。
  • 可以看到数字0寄存器也变成了 dataspace。这就是我们之前说的复制专用寄存器。

2.2 数字寄存器

除了刚才的数字 0 寄存器(也叫复制寄存器)之外,还有其他九个数字寄存器[1-9]。这就等于给寄存器编了个号码,类似于人的身份证号一样。

特点: 当删除一整行时候

  • 数字1:最近删除的文本
  • 数字2:存放倒数第二删除的文本

删除一整行场景

可以看到数字寄存器内容会按照删除行顺序倒序。需要注意的是只有删除整行才会这样。大家可以自己试试看删除单个单词会出现这样的情况么?

2.3 有名寄存器

这就相当于给寄存器起了个名字。只不过名字比较简单 [a-Z]。场景和逻辑都比较简单。下面我们来看下演示:

可以看到我们给每个删除操作都分门别类取了个名字。这样就可以按需提取使用了。

黑洞寄存器

这个看名字就很容易理解。指定到这个寄存器的内容是有去无回的。真正意义上的删除。

使用黑洞寄存器后,我们可以通过 reg 命令查看寄存器内容。可以看到所有的寄存器都不存在env 内容,也就是说通过寄存器已经直接删除了。

3. 小结

以上就是寄存器的主要内容,如果大家看过 Vim 帮助的话。会发现还有很多其他的寄存器。这里只是涉及最常用的寄存器。基本可以满足大家日常使用需要。其他更高级的寄存器,大家可以自行查看使用。