Vim编辑是依靠大量的快捷键完成需要的一切操作,同时双手均不离开键盘核心区。使用这种操作方式时,双臂几乎不需要移动,上身完全放松,是一种非常省力的工作方式。缺点是需要习惯Vim的几种编辑模式,背大量的快捷键,并熟练运用。
方向移动
Vim使用的hjkl
方式彻底避免了频繁去按方向键的问题,右手可以彻底不用移动,在键盘的核心区就可以移动光标。平铺的方向键排布与一般的方向键有所区别,需要花时间适应一下。
经验是把上下和左右分为两组来适应使用,熟练后再在脑中组合斜向的移动。也就是初期先hl
调整左右,再jk
调整上下,避免混乱。
词级移动
单个字符移动在大多数情况下是很慢的,于是各种编辑器都提供了直接跳过一个单词的移动方式。主流编辑器里是按住Ctrl
+左右方向键,很方便,也符合直觉。
到了Vim里则需要一点理解,使用B
(Back)来移动到前一个单词开头,W
(Word)来移动到后一个单词的开头,E
(End)移动到当前单词的尾部。值得注意的是,Vim里这几个键区分了大小写,小写状态会考虑文本中的一些分隔符,大写状态只考虑空格。
选取
主流编辑器是按住Shift
+方向键进行选取,一般搭配Alt
键可以进行块选取。Vim则需要在Normal
模式下按v
进入Visual
模式然后移动光标进行选择。块选取则需要按下Ctrl+v
进入块选取模式,然后移动光标进行选取。
词级选取普通编辑器只需要复合Ctrl
和Shift
的操作即可,Vim则使用了一种比较复杂的操作方式完成,但上限更高。Vim里可以先移动到单词开头,进入Visual
模式,然后使用词级移动来选择一个单词。也可以借助Vim的文本对象来输入viw
或者vaw
直接选中当前光标所在的单词。
借助文本对象,选取还可以w
换成s
选中句子,或者p
选中整段,不过在代码里,代码很可能整段都被识别成了一个句子,而中间有空行又会导致一段代码被分割成了两个段落,导致这种选取方式并不实用。
屏幕滚动
主流编辑器一般是Ctrl
+上下方向键来滚动一行,PageUp
、PageDown
来整屏滚动,键位有些远,而且粒度区分较大,要么一行,要么一屏。Vim提供了三种滚屏的方式
- 滚动一行
Ctrl+E
,Ctrl+Y
- 滚动半屏
Ctrl+D
,Ctrl+U
- 滚动整屏
Ctrl+F
,Ctrl+B
半屏的指令可以用Up和Down记忆,整屏滚动是Back和Forth,单行似乎没有什么好的记忆方式,可以靠跟其他滚动键位相对位置来记。