学 Vim 时希望早点知道的建议

从 2009 年开始,我就一直把 Vim 当做我的主要(唯一)文本编辑器。在过去的这些年,我学到了很多好用的 Vim 技巧,它们令我感觉相见恨晚,因为它们极大地提高了我的文本编辑效率。在这篇博文中,我想与你们分享其中的最精华部分。

HJKL

Vim 新手通常会收到的第一条建议是“使用 h/j/k/l 键代替方向键!”在很长一段时间,我都忽略了这一条建议因为我觉得那很荒谬:我究竟为何非得那么做?然而,有天我还是决定试一试,并且一试便一发不可收拾了。虽然我花了很多天时间才适应了这条建议,可是一旦上手,我才恍然大悟。h/j/k/l 几个键直接处于本位列上,所以你的手不用(像在使用方向键时那样)移动太远的距离。这不仅节省了键盘操作时间,提高了效率,而且让我的双手得以更加放松。我相信这是治好我手腕疼的因素之一。另一个因素是,我在手下面垫了一块腕垫。

如果你想学会使用 h/j/k/l 键代替方向键,那我建议你要么关闭方向键要么把它们重映射为其他更有用的指令。另一个不使用方向键的好处是,你将会适应更好的移动指令,如 f/F/t/Tw/W/b/B0/^/$,或者搜索指令。使用这些指令,比起简单地按下方向键或者 h/j/k/l 键,你的输入效率会更高。在 Vim 中,单键指令是一种反面模式。

相对行号

像很多用户一样,我也使用绝对行号,好吧,所有用户都使用它。然而,有天我偶然发现了这篇文章,令我陷入思考:万一相对行号更好用呢?我决定用用看。然后,就像 Ben 在这个视频中所言,绝对行号在我的生活中就是一个谎言。Vim的正宗用法是启用相对行号。

启用相对行号之前,我建议把下列命令行添加到 .vimrc 文件中:

这两个命令行一起,使 Vim 对当前行显示绝对行号,而对其它行显示相对行号。

接下来,我要说明相对行号的用处。很多 Vim 命令都有一个数字作为前缀。例如,要移动当前行以下的 10 行,可以用 10j。要移动当前行以上的 4 行,使用 4k。要对当前行及以下 2 行缩进,使用 >2j。明白了吧?有了相对行号,其它行(距离当前行)有多远