为了摆脱鼠标,高效准确的移动光标是首要的。下面总结移动指令。

上下左右

位置 按键 备注
k
j
h
i

可以前加数字,表示移动的倍数。例如,”10j”表示下移动10行。

位置 按键 备注
首行 gg
末行 G
第{n}行 {n}G、{n}gg、:{n} ctrl-g查看当前位置
文件{n}%处的行 {n}%
行首 0
行尾 $
行内第一个非空字符 -

屏幕滚动

位置 按键 备注
下一页 ctrl-f
上一页 ctrl-b
下半页 ctrl-d
上半页 ctrl-u
下一行 ctrl-e
上一行 ctrl-y
当前页顶部 H Head
当前页中部 M Medium
当前页底部 L Last
当前行滚到屏幕顶部 zt
当前行滚到屏幕底部 zb
当前行滚到屏幕中部 zz

单词

位置 按键 备注
下一词首 w
下一词首(含符号) W
上一词首 b
上一词首(含符号) B
下一词尾 e
下一词尾(含符号) E
上一词尾 ge
下一词尾 gE

历史记录

位置 按键
上次位置 ctrl-o
下次位置 ctrl-i

搜索

搜索是最快速的跳转。

位置 按键 备注 下一个 上一个
下个{char} f{char} ; ,
上个{char} F{char} ; ,
下个{char}前 t{char} ; ,
上个{char}前 T{char} ; ,
下个{string} /{string} 正则表达式 n N
上个{string} ?{string} 正则表达式 n N

mark

设置标签:m{mark}
查看标签::marks
跳转到标签:`{mark}

Vim常用自动创建的位置标志有:
| 位置 | 标签名 | 备注 |
| —————- | —— | —- |
| 上次跳转位置 | ` | |
| 上次修改位置 | . | |
| 上次修改位置开头 | [ | |
| 上次修改位结尾 | ] | |

跳转

位置 按键 例子
关键字定义处 ctrl+]
括号匹配处 %

折叠

Vim有 6 种折叠模式:

  • manual 手工定义折叠
  • indent 更多的缩进表示更高级别的折叠
  • expr 用表达式来定义折叠
  • syntax 用语法高亮来定义折叠
  • diff 对没有更改的文本进行折叠
  • marker 对文中的标志折叠

在.vimrc里增加set fdm=indent,即开启自动折叠。

常用操作为:

操作 按键 例子
关闭所有折叠 zm
展开所有折叠 zr
创建折叠 zf zf% 、zf56G
关闭折叠 zc
嵌套关闭折叠 zC
展开折叠 zo
嵌套展开折叠 zO
下一个折叠 zj
上一个折叠 zk

EasyMotion插件

Vim官网上评级为life changing的插件,能实现跨越多行的精准跳转。

使用方法:在原有的跳转指令前加{leader}{leader}键,{leader}默认为反斜杠\

例如,输入\\w,效果如下:
初始位置
指令效果

输入位置对应的字母即可跳转过去。太帅了。

小结

总结了Vim常用移动和跳转指令,及Easymotion插件。