Infravim
Vim 中如何快速移动光标?
Vim 最大的特征与最大的困难就是键盘操作, 所以快速移动光标是 Vim 的最基本技能. 光标移动可以配合其他快捷键使用, 比如 y, x, d, v, 更好地掌握了光标移动也就更好地掌握了其他编辑技能.

上下左右: 以字符为单位
- 进入 Vim 的 normal 模式 (如果你在 visual 模式或者 insert 模式, 可以按若干次
Esc回到 normal 模式) . h向左移动一个字符.j向下移动一个字符.k向上移动一个字符.l向右移动一个字符.
和其他快捷键一样, 可以配合数字来移动多个字符, 比如 5l 向左移动 5 个字符.
以单词为单位移动
多数情况下单词移动比字符移动更加高效, 比如要走到当前变量名前加一个 let.
w移动到下一个单词的词首.b移动到上一个单词的词首.e移动到下一个单词的结尾.
单词移动同样支持数字前缀, 比如 4w 可以向后移动 4 个单词. 此外大写的 W, B, E 具有同样的功能, 只不过小写用标点符号来分隔单词, 大写用空格来分隔单词, 更适合在代码里移动.
以行为单位移动
^移动到行首第一个词的首字母.|移动到行首第一个字符.$移动到行尾.j移动到下一行.k移动到上一行.:10移动光标到文件第 10 行. 可以:set number来让 vim 显示行号.gg移动到文件首行.G移动到文件尾行.
上下行移动的命令同样可以加数字, 比如 10j 向下移动 10 行.
以屏幕为单位移动
H移动到当前屏的首行.L移动到当前屏的尾行.M移动到当前屏的中间行.zt光标所在字符不动, 将当前行移动到屏幕顶部, 通常用来查看完整的下文, 比如函数, 类的定义.zz光标所在字符不动, 将当前行移到屏幕中间.zb光标所在字符不动, 将当前行移到屏幕底部.ctrl-f向下翻页, 移动一整个屏幕.ctrl-b向上翻页, 移动一整个屏幕.ctrl-e屏幕向下滚动一行.ctrl-y屏幕向上滚动一行.
后面几个 Ctrl 开头的命令是 Unix 命令行的惯例, 比如在 man 和 less 里也适用.
搜索结果之间跳转
在 Vim 中查找 时,
n跳转到下一个匹配.N跳转到上一个匹配.ctrl-o后退到上一个光标位置.ctrl-i前进到下一个光标位置.
文件之间移动
<backspace>跳转到交替文件 (上一个文件) .gt跳转到下一个标签页.gT跳转到上一个标签页.Ctrl+w h切换到左边窗格.Ctrl+w j切换到下边窗格.Ctrl+w k切换到上边窗格.Ctrl+w l切换到右边窗格.Ctrl+w w遍历切换窗格.
更多 Vim 多文件编辑操作可以参考: