基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但 VIM 的强大之处在于他的命令行模式!你会发现,在你越来越了解 VIM 之后,你就会花越来越少的时间使用插入模式了。
使用 h、j、k、l
使用 VIM 高效率编辑的第一步,就是放弃使用箭头键。使用 VIM,你就不用频繁的在箭头键和字母键之间移来移去了,这会节省你很多时间。当你在命令模式时,你可以用 h、j、k、l 来分别实现左、下、上、右箭头的功能。一开始可能需要适应一下,但一旦习惯这种方式,你就会发现这样操作的高效之处了。
这里是常用到的一些命令(motion):
- fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。
- tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)
- Fx:和 fx 类似,不过是往回找。
- w:光标往前移动一个词。
- b:光标往后移动一个词。
- 0:移动光标到当前行首。
- ^:移动光标到当前行的第一个字母位置。
- $:移动光标到行尾。
- ):移动光标到下一个句子。
- ( :移动光标到上一个句子。
VIM 有很多命令,可以用来到达文件里面你想到达的地方。下面是一些在文件里面移动的命令:
- <C-F>:向下移动一屏。
- <C-B>:向上移动一屏。
- G:到文件尾
- numG:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)
- gg:到文件首
- H:移动光标到屏幕上面
- M:移动光标到屏幕中间
- L:移动光标到屏幕下面
- *:读取光标处的字符串,并且移动光标到它再次出现的地方。
- #:和上面的类似,但是是往反方向寻找。
- /text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。
- ?text:和上面类似,但是是反方向。
- ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。
- `a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。
- `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。
高效的输入
使用关键词自动完成
VIM 有一个非常漂亮的关键词自动完成系统。这表示,你可以输入一个长词的一部分,然后按一下某个键,然后 VIM 就替你完成了这个长词的输入了。举个例子:你有一个变量名为 iAmALongAndAwkwardVarName 在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。
使用关键词自动完成功能,你只需要输入开始几个字母(比如 iAmAL),然后按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。
聪明的进入插入模式
很多新手进入插入模式都只是用 i。这样当然可以进入插入模式,但通常不是那么合适,因为 VIM 提供了很多进入插入模式的命令。下面是最常用的一些:
- i:在当前字符的左边插入
- I:在当前行首插入
- a:在当前字符的右边插入
- A:在当前行尾插入
- o:在当前行下面插入一个新行
- O:在当前行上面插入一个新行
- c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。
- d{motion}:和上面差不多,但是不进入插入模式。
分屏启动Vim
- 使用大写的O参数来垂直分屏。
vim -On file1 file2 ...
- 使用小写的o参数来水平分屏。
vim -on file1 file2 ...
注释: n是数字,表示分成几个屏。
关闭分屏
- 关闭当前窗口。
Ctrl+W c
- 关闭当前窗口,如果只剩最后一个了,则退出Vim。
Ctrl+W q
分屏
- 上下分割当前打开的文件。
Ctrl+W s
- 上下分割,并打开一个新的文件。
:sp filename
- 左右分割当前打开的文件。
Ctrl+W v
- 左右分割,并打开一个新的文件。
:vsp filename
移动光标
Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W
- 把光标移到右边的屏。
Ctrl+W l
- 把光标移到左边的屏中。
Ctrl+W h
- 把光标移到上边的屏中。
Ctrl+W k
- 把光标移到下边的屏中。
Ctrl+W j
- 把光标移到下一个的屏中。.
Ctrl+W w
移动分屏
这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
- 向右移动。
Ctrl+W L
- 向左移动
Ctrl+W H
- 向上移动
Ctrl+W K
- 向下移动
Ctrl+W J
屏幕尺寸
下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。
- 让所有的屏都有一样的高度。
Ctrl+W =
- 增加高度。
Ctrl+W +
- 减少高度。
Ctrl+W -