提起文本编辑器,你一定会想到编辑器之神 Vim。作为一个快 30 岁的「老牌」编辑器,直到现在还很受欢迎。Vim 编辑文件非常高效,可支持多个操作系统,如 Unix/Linux、Windows、macOS,甚至 ios 和 android 上都能找到 Vim 的移植版本。 Vim 虽然非常强大,但是需要记住很多操作命令。如果没有有效的学习方法,操作起来很不方便,只有做到非常熟练才能感受到它带来的快捷。下图展示了 Vim 中关于删除、复制与粘贴的部分命令: 其实 Vim 的操作命令还远不如此,如果没有很好的学习方法,可能很难使用这种编辑器。 那么有没有更好的方式来进行 Vim 学习呢? 近日,在 GitHub 上开源了一个用聪明的方式学习 Vim 的项目,上线短短几天,便收获了 3400 星。让我们来看看它是怎么做到聪明学习 Vim 的。 项目地址:https://github.com/iggredible/Learn-Vim 用聪明的方式打开 Vim 该项目提供了学习 Vim 的具体步骤,共分为 19 个章节。通过学习,你将掌握 vim 的语法、对文件的移动操作、撤销等等多种操作命令。 学习目录如下图所示: 这个「聪明」学习 Vim 到底体现在哪些方面呢?与别的 Vim 学习教程的不同之处又有哪些呢?接下来一一解析。 Vim 语法 在所有章节中,首先介绍一下 Vim 语法。一旦理解了 Vim 命令的语法结构,就可以与 Vim 进行「对话」了,就如想要学习一门语言,语法规则是绕不开的一步。而这个语法,就是「动词 + 名词」。现在使用基本的 Vim 动词和名词来建立词汇表。 Vim 名词与动词 Vim 中的名词(移动):移动是在 Vim 中进行上下左右等操作。Vim 中的一些动作如下所示:
h:左j:下k:上l:右w:移动到下个单词的开头}:跳到下一段$:移动到本行末尾
Vim 中的动词(操作符):以 h 操作符为例,Vim 中有 16 种。但只需掌握其中的 3 种,就能满足 80% 的编辑要求。
y复制文本d删除文本,并保存到寄存器c删除文本,保存到寄存器,并开启「插入」模式
现在了解了 Vim 中基本的名词和动词,就可以根据语法规则组合上述名词和动词:
y$:把当前所有的内容,从当前位置拖至行尾;
dw:从当前位置删除到下一个单词的开头;
c}:从当前位置到当前段落末尾进行更改。
当然移动也接受数字作为参数,如果你想上移 3 行,不需要键入 k 三次,直接使用 3k 就行了:
y2h:向左移动 2 个字符;
d2w:删除后面的 2 个单词;
c2j:更改接下来 2 行。
除此以外,Vim 还允许通过键入操作符命令两次来执行行操作。例如:键入「dd」,删除整行;键入「cc」,更改整行内容。 Vim 可组合性和语法 在学习了 Vim 语法之后,下面介绍一下 Vim 中的可组合性。可组合性意味着拥有一组可以组合且执行更复杂命令的通用命令。 在 Vim 中可以组合较简单的命令执行复杂的命令。当 Vim 与外部程序集成时,可组合性的真正威力就显露出来了。 假如你有一个非常混乱的文本,如下所示,你想把它变成列表形式: