网上对 Vim 的说法往往是「学习曲线陡」、「入门门槛高」,等等。很多人也因此在对 Vim 稍有了解之后就对 Vim 望而却步,怕影响工作效率或者认投入相比产出不划算而没有真正走进 Vim 的大门。

确实,Vim 不像其他编辑器一样上手即用,但是也远没有那么可怕。花个一晚上时间熟悉最基础的十来个命令,在你常用的编辑器上装一个 Vim 插件,例如 vscodevimIdeaVim,Vim 就算入门了。

读完这篇入门文章,花个把小时时间熟悉一下本文中的操作,然后回到你平常写代码的地方,放下普通的编辑器,用 Vim 来编辑,你会发现,转向 Vim 的第一天,工作效率并没有降低,甚至可能反而略有提升。

Vim 的大门就此打开,之后的学习曲线平缓而温和, edit text at the speed of thought!

新建一个文本文件并填充一些没有用的代码或者文本,这里将是你练习 Vim 操作的地方。

在终端中用 vim 打开这个文本文件,或者通过前面提到的插件激活编辑器的 Vim 模式并打开这个文件。

强烈建议你边看本文边操作,操作的过程也是记忆的过程,看完本文基本你已经记了个七七八八,很多命令马上就可以信手拈来了。

开始

现在,我们处在 Vim 的普通模式

普通模式

普通模式下无法直接通过打字输入的方式对文本进行编辑,但是可以移动光标,或是执行一些命令。

普通模式是 Vim 的默认模式,也是 Vim 最自然放松的状态,这也是 Vim 和其他编辑器不同的地方。

随着对 Vim 了解的深入,你逐渐就会知道 Vim 为什么是这样的。

移动光标

在 Vim 中,我们可以通过 j↑ k↓ h← l→ 四个按键来移动光标。

j k l正好在右手的食指、中指、无名指下面,手掌不用移动就能按到。

h 在右手食指左边的一个位置,刚刚接触 Vim 的时候可能会觉得不方便,但是掌握了本文下面提到的一些命令,以及一些更加复杂的操作之后你就会发现,需要连续按超过一次 hl 的操作,大部分都可以通过其他命令实现。使用最多的,也就是 jk 上下两个。

插入模式

在普通模式下按 i 就进入了插入(insert)模式。

插入模式下的 Vim 和普通的编辑器差不多,用方向键移动光标,键盘输入打字。

学会了移动光标和最简单的打字输入,你已经可以用最基础的方式进行文本编辑了。

但是,Vim 强大的功能此刻还完全没有露头,下面要讲的,才是让 Vim 可以进行高效文本编辑的所在。

移动光标的更多操作

前面提到的 hjkl 一次只能让光标移动一个字符,而下面这些操作可以让光标跳跃移动。

b w 分别移动到前、后单词的开头,代表 backward,forward one word 。

e ge 分别移动到后、前单词的结尾,代表 end。

0 $ 分别移动到行首和行尾。

^shift 6)和 0 相似,但是是移动到当前行的第一个非空字符。

命令用途
b移动到当前/上一个单词的开头
w移动到下一个单词的开头
e移动到当前/下一个单词结尾
ge移动到上一个单词结尾
0行首
$行尾
^
<⇧ 6>
第一个非空白字符

删除

下面来看一下删除的操作。

x 可以删除光标下的字符,X 删除光标前面的字符。

d 在 Vim 中代表 delete 删除,Vim 中的删除通过按 d 再加要删除的范围来实现。

删除的范围可以看下面这个表格。

d 加方向键可以删除对应方向上的一个字符(上下方向则删除一行)。

顺带一提,在 Vim 的普通模式下先输入数字 n 再输入命令,即可执行 n 次命令,例如 d5j 就表示向下删除 5 行。

前面提到的按单词移动光标和移动到行尾行首的命令,也可以指定删除的范围,例如 db 删除光标起始到单词开头,d$ 从光标位置删除到行尾。

连按两次删除, dd 命令可以删除整行。同样,也可以用数字加命令的方式一次删除多行。

此外,还有等于 delete a word 的 daw ,删除一个单词,和 delete n words 的 d{n}w,删除多个单词。

命令用途
dh删除前一个字符(d←
dl删除一个字符(等同于 x or d→
d5j删除 5 行
db删除光标起始到单词开头
d$从光标位置删除到行尾
dd删除 1 行
{n}dd删除 n 行
daw删除一个单词
d{n}w删除 n 个单词

花样进入插入模式

前面提到的 i 只是简单地在当前光标所在的位置进入插入模式,而 Vim 提供了一些命令让我们可以更快地移动到目标位置并插入。

a 代表 append 追加,会在当前光标位置的后面进入插入模式。

在普通模式下按 o,会在光标当前所在的行下面创建一个新行并进入插入模式,代表 open。

s删除当前光标下的字符并进入插入模式。

这三个命令还分别有与之匹配的大写命令,实现相似的操作。

A 会在当前行的末尾进入插入模式,O 会在当前行的上面创建一个新行并进入插入模式,S删除整行并进入插入模式。i 也有与之匹配的 I,在当前行的第一个非空字符处进入插入模式。

命令进入插入模式的位置
a在当前光标之后
A在当前行的结尾
i在光标位置
I当前行的第一个非空字符处
o插入新行
O插入新行
s删除光标下的字符
S删除整行

撤销操作

不小心删除了不该删除的文本怎么办?在 Vim 中,u 代表 undo,可以撤销最近的一次操作。

命令模式

如果你是在终端当中用 vim 命令进行编辑,那你可能经常要和 Vim 的命令模式打交道。

: 进入 Vim 的命令模式,输入命令再按回车即可进行相应的操作。

:w 代表 write,:q 代表 quit。

命令也可以一次输入多个,例如 :wq - 保存并退出。

命令后加 ! 代表强行执行,例如 :q! - 不保存而强行退出。

All in Vim!

现在,你已经掌握了最基本的插入、删除和撤销操作,足以应付简单的日常工作了。

下一篇文章,我们来介绍一些进阶操作,让你的 Vim 更上一层楼。


Cygra
24 声望3 粉丝