- 基础移动与跳转
(/):移动到句首 / 句尾。{/}:移动到段首 / 段尾。-:移动到上一行行首。+或Enter:移动到下一行行首。0:移动到绝对行首。^:移动到行内第一个非空字符,也就是常说的软行首。$:移动到行尾。|:移动到当前行第n列;未配合数字时可近似理解为移动到行首位置。gg:跳到文首。G:跳到文尾。nG、ngg或:n:跳到第n行,例如35G。w/W:向后移动一个单词;W会忽略标点。b/B:向前移动一个单词;B会忽略标点。e/E:移动到单词末尾。%:在成对符号之间跳转,如() [] {}。f/F+ 字符:在当前行内向前 / 向后查找并跳到该字符。t/T+ 字符:在当前行内向前 / 向后查找,并停在目标字符的前一个位置。;/,:重复 / 反向重复上一次f/F/t/T跳转。
- 插入与基础编辑
i:在光标前进入插入模式。I:在行首进入插入模式。a:在光标后进入插入模式。A:在行尾进入插入模式。o:在下方新开一行并进入插入模式。O:在上方新开一行并进入插入模式。x:删除光标后的一个字符,相当于 Delete。X:删除光标前的一个字符,相当于 Backspace。r:替换当前字符。R:进入替换模式。u:撤销。Ctrl + R:重做。J:合并当前行与下一行。~:切换当前字符的大小写。&:重复执行上一次替换命令。Ctrl + A:将光标下的数字加1。Ctrl + X:将光标下的数字减1。
- 删除、修改与替换
dw:删除到下一个单词开头。de:删除到当前单词末尾。dd:删除整行。d$:从当前光标删除到行尾。d^:从当前光标删除到软行首。cc:修改整行,删除后直接进入插入模式。ce:修改到当前词尾。C:从当前光标修改到行尾。S:重写当前整行,作用同cc。s:替换当前字符并进入插入模式。ci{:修改当前大括号{}内的内容。dt+ 字符:删除直到目标字符前。ct+ 字符:修改直到目标字符前。:[范围]s/旧/新/[标志]:执行替换命令。
常用范围:
.:当前行。1:文首。$:文尾。%:全文。a,b:指定行范围,例如1,10。.+5:当前行往后5行。
常用标志:
g:行内全局替换。c:逐个确认替换。
补充:
- 使用
\<旧\>可以匹配完整单词。
- 复制、粘贴与缩进
yy:复制当前整行。Y:默认情况下等同于yy,也是复制整行。3yy:复制从当前行开始的3行。yw:复制当前单词。y$:从光标复制到行尾。y^:从当前光标复制到软行首。0y$:从绝对行首复制到行尾,不包含额外换行语义的“整行文字”复制场景很常用。^y$:从第一个非空字符复制到行尾。p:粘贴到光标后或下一行。P:粘贴到光标前或上一行。>>:整行向右缩进。<<:整行向左缩进。:%y:复制全文。:%d:删除全文。ggvG或Gvgg:全选全文。:%y+:复制全文到系统剪贴板。"+p:从系统剪贴板粘贴。
- 查找、滚动与定位
/:向下查找关键字。?:向上查找关键字。*/#:向下 / 向上查找当前光标所在单词。H:跳到当前屏幕顶部。M:跳到当前屏幕中间。L:跳到当前屏幕底部。zz:将当前行置于屏幕中央。zt:将当前行置于屏幕顶部。zb:将当前行置于屏幕底部。Ctrl + F:向下翻一页。Ctrl + B:向上翻一页。Ctrl + D:向下翻半页。Ctrl + U:向上翻半页。Ctrl + E:屏幕向下滚动一行。Ctrl + Y:屏幕向上滚动一行。Ctrl + G:显示当前文件状态信息。
- 文本对象与结构化操作
yi(:复制括号()内部内容。ya(:复制包含括号在内的内容。yi":复制双引号""内的内容。yit:复制 HTML / XML 标签内部内容。yiw:复制当前小单词。yiW:复制当前大单词。v%:选中匹配符号之间的内容。d%:删除匹配符号之间的内容。y%:复制匹配符号之间的内容。
- 格式化、代码块与可视模式
=:执行自动缩进 / 格式化操作。==:格式化当前行。=G:从当前行格式化到文件末尾。gg=G:格式化全文。=i{:格式化当前大括号块内部内容。gv:重新选中上一次的可视区域。gn:选中下一个搜索匹配项。
- 寄存器、标记与跳转历史
寄存器常用项:
":无名寄存器,默认复制、删除、粘贴都走这里。0:最近一次 yank 的内容。1-9:最近9次删除历史。+:系统剪贴板寄存器。.:上一次插入模式输入的内容,只读。%:当前文件名,只读。#:上一个编辑过的文件名。:reg:查看所有寄存器。
标记与跳转:
ma:在当前位置打上名为a的标记。'a:跳到标记a所在行的行首。`a:跳到标记a的精确位置。``:跳回上一次光标停留的位置。`.:跳回上一次修改的位置。`^:跳回上一次退出插入模式的位置。:marks:查看所有标记。:delmarks a:删除标记a。:delmarks!:删除全部标记。Ctrl + O/Ctrl + I:在跳转历史中后退 / 前进。
- 缓冲区、标签页与窗口管理
缓冲区与标签页:
:ls:列出当前所有缓冲区。:b 编号:切换到指定缓冲区。gt/gT:切换到下一个 / 上一个标签页。n gt:跳到第n个标签页。:bn/:bp:切换到下一个 / 上一个缓冲区。:#:显示当前行号。
窗口与分屏:
Ctrl + W+h/j/k/l或Ctrl + W+w:在窗口之间切换。Ctrl + W+s:水平分屏。Ctrl + W+v:垂直分屏。Ctrl + W+q:关闭当前窗口。Ctrl + W+o:只保留当前窗口,关闭其他窗口。Ctrl + W++/-:增大 / 减小当前窗口高度。Ctrl + W+>/<:增大 / 减小当前窗口宽度。Ctrl + W+=:让所有窗口等宽等高。Ctrl + W+_:将当前窗口高度最大化。Ctrl + W+|:将当前窗口宽度最大化。Ctrl + W+H/J/K/L:移动当前窗口本身的位置,注意这里是大写。Ctrl + W+r:轮换窗口位置。
- 插入模式专用快捷键
Ctrl + H:退格,删除前一个字符。Ctrl + W:删除前一个单词。Ctrl + U:删除当前行中光标前的所有内容。Ctrl + N:补全下一个候选项。Ctrl + P:补全上一个候选项。Ctrl + T:增加当前行缩进。Ctrl + D:减少当前行缩进。Ctrl + O:临时回到普通模式执行一个命令,执行后立即回到插入模式。
- 命令行模式快捷键
::进入命令行模式。Ctrl + F:打开命令历史窗口,可像编辑文本一样编辑历史命令。Ctrl + W:删除前一个单词。Ctrl + R+ 寄存器名:把寄存器内容插入到命令行。Ctrl + RCtrl + W:把当前光标下的单词直接插入到命令行。
- 保存与退出
:w:保存。:wq:保存并退出。ZZ:保存并退出。:q!:强制退出,不保存。ZQ:强制退出,不保存。