Vim编辑是依靠大量的快捷键完成需要的一切操作,同时双手均不离开键盘核心区。使用这种操作方式时,双臂几乎不需要移动,上身完全放松,是一种非常省力的工作方式。缺点是需要习惯Vim的几种编辑模式,背大量的快捷键,并熟练运用。

方向移动

Vim使用的hjkl方式彻底避免了频繁去按方向键的问题,右手可以彻底不用移动,在键盘的核心区就可以移动光标。平铺的方向键排布与一般的方向键有所区别,需要花时间适应一下。

经验是把上下和左右分为两组来适应使用,熟练后再在脑中组合斜向的移动。也就是初期先hl调整左右,再jk调整上下,避免混乱。

词级移动

单个字符移动在大多数情况下是很慢的,于是各种编辑器都提供了直接跳过一个单词的移动方式。主流编辑器里是按住Ctrl+左右方向键,很方便,也符合直觉。

到了Vim里则需要一点理解,使用B(Back)来移动到前一个单词开头,W(Word)来移动到后一个单词的开头,E(End)移动到当前单词的尾部。值得注意的是,Vim里这几个键区分了大小写,小写状态会考虑文本中的一些分隔符,大写状态只考虑空格。

选取

主流编辑器是按住Shift+方向键进行选取,一般搭配Alt键可以进行块选取。Vim则需要在Normal模式下按v进入Visual模式然后移动光标进行选择。块选取则需要按下Ctrl+v进入块选取模式,然后移动光标进行选取。

词级选取普通编辑器只需要复合CtrlShift的操作即可,Vim则使用了一种比较复杂的操作方式完成,但上限更高。Vim里可以先移动到单词开头,进入Visual模式,然后使用词级移动来选择一个单词。也可以借助Vim的文本对象来输入viw或者vaw直接选中当前光标所在的单词。

借助文本对象,选取还可以w换成s选中句子,或者p选中整段,不过在代码里,代码很可能整段都被识别成了一个句子,而中间有空行又会导致一段代码被分割成了两个段落,导致这种选取方式并不实用。

屏幕滚动

主流编辑器一般是Ctrl+上下方向键来滚动一行,PageUpPageDown来整屏滚动,键位有些远,而且粒度区分较大,要么一行,要么一屏。Vim提供了三种滚屏的方式

  1. 滚动一行 Ctrl+ECtrl+Y
  2. 滚动半屏 Ctrl+DCtrl+U
  3. 滚动整屏 Ctrl+FCtrl+B

半屏的指令可以用Up和Down记忆,整屏滚动是Back和Forth,单行似乎没有什么好的记忆方式,可以靠跟其他滚动键位相对位置来记。