您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Vim 的宏与文本对象

这一小节我们来讲解一下 Vim 的文本对象和宏的概念,这两个概念比较难理解。但是却很重要,下面我们一起来看一下:

1. 文本对象

文本对象首先针对的就是文本。文本就单个字符,单词,句子甚至段落。作为编辑器操作文本是最基本的。但是如何能高效的操作上述这些不同文本对象每个编辑器可能都不相同。Vim 也有它自有的特点。它把这些文本都称之为文本对象。所以文本对象听着高大上,其实很容易理解。简单可以按照如下:

在之前操作中有很多操作都已经涉及到了文本对象操作,这里先抛出公式。后面会举例说明。

{operator}{a}{object}
{operator}{i}{object}

daw = delete a word
ciw = change inner word

上述公式中 operator 之前已经讲过了,忘记的同学可以查看前面的,或者最好可以通过 Vim 的帮助查看。object 就是我们上述讲的三个文本对象。可能需要注意的就是它们之 a 和 i

a: 包含尾部间隔空格

i: 只是本身,不包含尾部单词间隔空格

2. 文本对象实战操作

具体的指令和之前的增删改查讲过的并无二异。都是可以套用。这里不再赘述了。所以这里直接看看文本对象操作本身到底有何不一样的地方。

某段括号内所有。这里以 Golang 一段为例。

Tips:大家可以根据这段试试小括号

打开 object.txt ,并其中的句子,空格。然后段落,不空格。

大家可以根据上述场景举一反三。原理都是大同小异。

3. 宏

宏字面理解不太好理解。本质就是个重复回放脚本。我们可以把经常用到的固定步骤操作录制下来,然后需要时候只用下就可以了,这就是宏。类似于里的存储过程,或者是脚本。

普通模式下,q 键便是宏录制/停止快捷键。

宏录制后需要放在寄存器的,所以需要跟上寄存器名字q{register}。比如:qa

录制完毕后,按下 q 键停止

时候只需要 @{register} 即可。就像微博一样 @ 一下。

重复 n@{register}

规范光标位置:0——推荐在行首

执行编辑和操作

移动光标到容易回访的位置:j

4. 宏实战

我们在中通过宏批量加注释。

录制宏到 c 寄存器,录制完之后批量宏 n@c:

使用 @@ 命令执行一遍上一次的操作,为 main.go 的第4,21,25行注释:

5. 总结

以上就是宏与文本对象的基本原理和相关。尤其是宏的概念可以让很多重复操作事半功倍。让 Vim 变得更有用也更有趣。


联系我
置顶