持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
Vim 提供了很多在文档中移动的方法,以及许多在缓冲区间跳转的命令,这篇文章中我们就来学习一下,帮助我们提高操作效率。
上下左右移动
像其他文本编辑器一样,Vim 也允许我们使用光标键来移动光标。不过,Vim 还提供了另外一种方式,即使用 h、j、k、l 键来移动光标。这些键的用途如下:
| 命令 | 光标动作 |
|---|---|
h | 左移一列 |
l | 右移一列 |
j | 下移一列 |
k | 上移一列 |
这些光标可以保证我们不用移动手掌或看着手指,就可以输入键盘上的任意按键了,这是理想的盲打姿势。
如果你发现自己很难改掉使用光标键的习惯,那么可以试着把以下几行加到你的 vimrc 里:
motions/disable-arrowkeys.vim
noremap <Up> <Nop>
noremap <Up> <Nop>
noremap <Up> <Nop>
noremap <Up> <Nop>
这几行会把光标键映射为什么都不做。这样,你每次移动手去够光标键时,就会受到提醒:你应该让手停留在本位行上。如此一来,用不了多久你就会进入状态,开始用 h、j、k 及 l 了。
但是不建议你把这些映射项永远留在 vimrc 里,只需保留足够长的时间,长到足以让你养成使用 h、j、k 及 l 的习惯就行了。这样我们就可以考虑把这些光标键映射成更有用的功能。
基于单词移动
Vim 有两组面向单词正向及反向移动的命令。相比一次移动一列来说,这二者允许我们更快地移动。命令如下:
| 命令 | 光标动作 |
|---|---|
w | 正向移动到下一个单词的开头 |
b | 反向移动到当前单词/上一单词的开头 |
e | 正向移动到当前单词/下一单次的结尾 |
ge | 反向移动到上一单词的结尾 |
基于字符串移动
上面我们提到的都是基于单词的移动,下面我们再来介绍一下基于字符串的移动。
一个单词由字母、数字、下划线,或其他非空白字符的序列组成,单词间以空白字符分隔。而字串的定义则更简单,它由非空白字符序列组成,字串间以空白字符分隔。
对于字符串,Vim 也有相对应的命令,即 W、B、E和 gE。
下面我们来看一个实际的例子:
e.g. we're going too slow
通过 w 命令我们可以得知,在上面这一句话中包含了 5 个字符串及 10 个单词,句号及单引号都被当成了单词,因此,如果我们用 w 命令在这段文本中移动的话,会显得很慢。
在实际工作中,我们会对字符串和单词有更深的体会。
参考文档
- 《Vim实用技巧》—— [英]Drew Neil