初章:初识Vim

有安装 Vimplus 第三方插件让 Vim 更方便运用,但我因为个人开发习惯,选择在 Clion 上安装对应的 Vim 插件:

vim插件.png

认识 . 命令

我们将看到 Vim 可以录制任意数目的按键操作,然后在以后重复执行它们。这让我们可以把最常重复的工作流程录制下来,并用一个按键重放它们。可以把 . 命令当成一个很小的宏。

总的来讲,. 就是重复你上次的行为:

  • . 在普通模式下的功能是重复 最后一次修改操作
  • 在插入模式下,执行所有修改操作都会被记录,直到你保存并返回到普通模式。如果你这个时候执行 . 就会重复从进入到插入模式到退回到普通模式所有的行为(包括插入命令本身哦!)。

有点需要特别说明,我们知道普通模式下 A 代表在当前行的末尾插入。那么这个命令不是单纯的插入,它实际由两部分组成,即跳转到当前行的尾部+插入。它应该被视为插入。举个例子说明:

  1. 你在普通模式下,光标位于一行的开头,按下 A,跳转到行末,进入插入模式
  2. 在行末插入了 “Hello”,然后按 Esc 回到普通模式
  3. 按下 .,光标会移动到当前行的末尾,进入插入模式,并插入 “Hello”

以退为进

1
2
3
4
5
var foo = "method("+argument1+","+argument2+")";

vim 之后成为如下形式

var foo = "method(" + argument1 + "," + argument2 + ")";

为了应用 . ,我们务必使用这样一种命令,即带有某个功能的插入模式,这里选择 s,即删除一个字符并插入。执行之后,输入_+_ ,保存并到普通模式,然后就可以找到到 + 字符那里,执行 . 即可。

存储这系列操作之后,我们应该查找所有字符进行逐一替换,而不是进行光标移动去一个一个找。f{char} 就能查找某个字符,查找到之后,执行 . 即可。

可是每次输入 f{char} 查找相当费时,当你第一次执行 f{char} 之后,下次输入 ; 就可以代表再次执行 f{char}。

注:_ 代表空格

执行、重复、回退

当 Vim 让一个操作或移动可以很方便地重复时, 它总是会提供某种方式, 让我们在不小心做过头时能回退回来。 对 . 命令而言, 我们永远可以按 u 键撤销上次的修改。 如果在使用 f{char} 命令后, 不小心按了太多次 ; 键, 就会偏离我们的目标。 不过可以再按 , 键跳回去。

重复与回退.png


⭐️内容取自著者Drew Neil《Vim实用技巧》,仅从中取出个人以为需要纪录的内容。不追求内容的完整性,却也不会丢失所记内容的逻辑性。如果需要了解细致,建议读原书