全新工具箱

本速查表按分类列出了 Vim 常用的命令和快捷键,数量较多,可使用 Ctrl + F 进行查找。

全局命令

命令 / 快捷键功能描述
:h[elp] 关键字显示指定关键字的帮助
:sav[eas] 文件名另存为...
:clo[se]关闭当前窗口
:ter[minal]打开新的终端窗口
K打开光标所在单词对应的 man 页面

移动光标

命令 / 快捷键功能描述
h左移光标
j下移光标
k上移光标
l右移光标
H移动到当前页面顶部
M移动到当前页面中间
L移动到当前页面底部
w移动到下个单词开头
W移动到下个单词开头(单词含标点)
e移动到下个单词结尾
E移动到下个单词结尾(单词含标点)
b移动到上个单词开头
B移动到上个单词开头(单词含标点)
%跳转到配对的符号
0移动到行首
^移动到行首的非空白符
$移动到行尾
g_移动到行内最后一个非空白符
gg移动到文件第一行
G移动到文件最后一行
5gg5G移动到第 5 行
fx移动到字符 x 下次出现的位置
tx移动到字符 x 下次出现的位置的前一个字符
Fx移动到字符 x 上次出现的位置
Tx移动到字符 x 上次出现的位置的后一个字符
;重复之前的 ftFT 操作
,反向重复之前的 ftFT 操作
}移动到下一个段落(当编辑代码时则为函数/代码块)
{移动到上一个段落(当编辑代码时则为函数/代码块)
zz移动屏幕使光标居中
Ctrl + e向下移动屏幕一行(保持光标不动)
Ctrl + y向上移动屏幕一行(保持光标不动)
Ctrl + b向上滚动一屏
Ctrl + f向下滚动一屏
Ctrl + d向下滚动半屏
Ctrl + u向上滚动半屏

插入模式(插入/追加文本)

命令 / 快捷键功能描述
i从光标前开始插入字符
I从行首开始插入字符
a从光标后开始插入字符
A从行尾开始插入字符
o在当前行之下另起一行,开始插入字符
O在当前行之上另起一行,开始插入字符
ea从当前单词末尾开始插入
Ctrl + h在插入模式下,删除光标前的字符
Ctrl + w在插入模式下,删除光标前的单词
Ctrl + j在插入模式下,另起一行
Ctrl + t在插入模式下,向右缩进,宽度由 shiftwidth 控制
Ctrl + d在插入模式下,向左缩进,宽度由 shiftwidth 控制
Ctrl + n在插入模式下,在光标之前插入自动补全的下一个匹配项
Ctrl + p在插入模式下,在光标之前插入自动补全的上一个匹配项
Ctrl + rx在当前光标处插入 x 寄存器的内容
Esc退出插入模式

编辑文本

命令 / 快捷键功能描述
r替换当前字符
J将下一行合并到当前行,并在两部分文本之间插入一个空格
gJ将下一行合并到当前行,两部分文本之间不含空格
gwip重新调整段落
g~切换整个文本的大小写(即大写变小写,小写变大写)
gu把整个文本改成小写
gU把整个文本改成大写
ccS将光标所在的行删除,然后进入插入模式
Cc$删除光标所在位置到行尾的所有文本,然后进入插入模式
ciw将光标所在的单词删除,然后进入插入模式
cw从光标位置开始,修改单词
s删除当前字符,然后进入插入模式
xp将当前字符后移
uundo - 撤销最近一次操作
U恢复/撤销最后修改的行
Ctrl + rredo - 重做(和 u 相反)
.再次执行上一个命令

选择文本(可视化模式)

命令 / 快捷键功能描述
v进入可视化模式,移动光标高亮选择,然后,可以对被选中的文本执行命令
V进行可视化模式,以行为单位进行选择
o在可视化模式下,让光标在选择区域的开头和结尾进行切换
O在可视化模式下,切换光标到选择区域的角
Ctrl + v进入可视化模式,矩阵选择(即列模式)
aw在可视化模式下,选择当前单词
ab在可视化模式下,选择被 () 包裹的区域的内容(包含括号)
aB在可视化模式下,选择被 {} 包裹的区域的内容(包含花括号)
at在可视化模式下,选择被 <> 包裹的区域的内容(包含 <> 标签)
ib在可视化模式下,选择被 () 包裹的区域的内容(不包含括号)
iB在可视化模式下,选择被 {} 包裹的区域的内容(不包含花括号)
it在可视化模式下,选择被 <> 包裹的区域的内容(不包含 <> 标签)
Esc退出可视化模式

可视化模式命令

命令 / 快捷键功能描述
>向右缩进
<向左缩进
y复制选中的文本
d剪切选中的文本
~对选中的文本进行大小写切换
u将选中的文本转换为小写
U将选中的文本转换为大写

寄存器

命令 / 快捷键功能描述
:reg[isters]显示寄存器的内容
"xy复制内容到寄存器 x
"xp粘贴寄存器 x 中的内容
"+y复制内容到系统剪贴板寄存器
"+p粘贴系统剪贴板寄存器的内容

标记和位置

命令 / 快捷键功能描述
:marks显示标记列表
ma设置当前位置为标记 a
`a跳转到标记 a 的位置
`0跳转到 Vim 上一次退出时的位置
`"跳转到该文件上次编辑时的位置
`.跳转到该文件中最后一次修改的位置
``跳转到最后跳转的位置
:ju[mps]列出所有跳转
Ctrl + i转到跳转列表较新的位置
Ctrl + o转到跳转列表较旧的位置
:changes列出所有修改历史
g,转到修改历史列表较新的位置
g;转到修改历史列表较旧的位置
Ctrl + ]跳转到当前光标所在的标签

命令 / 快捷键功能描述
qa录制宏 a
q停止录制宏
@a执行宏 a
@@重新执行上次执行的宏

复制、剪切和粘贴

命令 / 快捷键功能描述
yy复制当前行
2yy复制 2 行
yw复制当前单词
y$复制从光标位置开始到行末的内容
p在光标后粘贴复制的内容
P在光标前粘贴复制的内容
dd剪切当前行
2dd剪切 2 行
dw剪切当前单词
d$D剪切从光标位置开始到行末的内容
x剪切当前字符

文本缩进

命令 / 快捷键功能描述
>>将当前行向右缩进,宽度由 shiftwidth 控制
<<将当前行向左缩进,宽度由 shiftwidth 控制
>%向右缩进 (){} 内的区域(光标需置于括号上)
>ib向右缩进 () 内的区域(光标需置于括号上)
>at向右缩进 <> 标签内的区域(光标需置于 <> 标签上)
3==自动缩进 3 行
=%自动缩进 (){} 内的区域(光标需置于括号上)
=iB自动缩进 {} 内的区域(光标需置于括号上)
gg=G自动缩进整个缓冲区
]p粘贴并调整缩进至当前行

文本搜索和替换

命令 / 快捷键功能描述
/pattern在当前文本中查找 pattern
?pattern向上查找 pattern
\vpatternpattern 中的非字母数字字符视为正则表达式特殊字符(不需转义字符)
n查找下一个
N查找上一个
:%s/old/new/gold 全部替换成 new
:%s/old/new/gcold 逐个替换成 new
:noh[lsearch]移除搜索结果的高亮显示

多文件编辑

命令 / 快捷键功能描述
:e[dit] 文件名在新建的缓冲区打开指定文件名的文件
:bn[ext]切换到下一个缓冲区
:bp[revious]切换到上一个缓冲区
:bd[elete]关闭缓冲区
:b[uffer]2切换到第 2 个缓冲区
:b[uffer] 文件切换到指定文件的缓冲区
:ls:buffers列出所有打开的缓冲区
:sp[lit] 文件名在新建的缓冲区打开指定文件名的文件,并水平分割窗口
:vs[lit] 文件名在新建的缓冲区打开指定文件名的文件,并垂直分割窗口
:vert[ical] ba[ll] 以垂直窗口的形式编辑所有缓冲区
:tab ba[ll]以标签的形式编辑所有缓冲区
Ctrl + ws水平分割窗口
Ctrl + wv垂直分割窗口
Ctrl + ww在窗口间切换
Ctrl + wq关闭窗口
Ctrl + wx切换到下一个窗口
Ctrl + w=让每个窗口具有相同高度和宽度
Ctrl + wh切换到左侧窗口
Ctrl + wl切换到右侧窗口
Ctrl + wj切换到下侧窗口
Ctrl + wk切换到上侧窗口
命令 / 快捷键功能描述
:vim[grep] /pattern/ {`{file}`}在多个文件中搜索 pattern
:cn[ext]移动至下一个搜索结果
:cp[revious]移动至上一个搜索结果
:cope[n]打开搜索结果列表
:ccl[ose]关闭 quickfix 窗口

标签

命令 / 快捷键功能描述
:tabnewtabnew {page.words.file}在新标签中打开文件
Ctrl + wT将窗口编程标签
gt:tabn[ext]切换到下一个标签
gT:tabp[revious]切换到上一个标签
2gt切换到第 2 个标签
:tabm[ove] 2把当前标签移动到第 2 个位置(下表从 0 开始)
tabc[lose]关闭当前标签
:tabo[nly]关闭其他标签
:tabdo command在所有标签中执行指定的命令(如:使用 tabdo q 关闭所有标签)

Diff(文件比较)

命令 / 快捷键功能描述
zf手动定义一个折叠行为
zd删除光标处的折叠
za展开/收起光标处的区块
zo展开光标处的区块
zc折叠光标处的区块
zr展开当前折叠层级
zm收起当前折叠层级
zi切换折叠功能
]c跳转到下一个不同处
[c跳转到上一个不同处
do:diffg[et] 从其他缓冲区获取不同之处
dp:diffpu[t]把不同之处存入其他缓冲区
:diffthis把当前窗口的内容作为文件对比的一部分
:dif[fupdate]刷新,重新比较
:diffo[ff]关闭当前窗口的 Diff 模式

退出

命令 / 快捷键功能描述
:w保存
:w !sudo tee %使用 sudo 保存当前文件
:wq:xZZ保存并退出
:q退出(文件已修改且未保存时 Vim 将发出警告)
:q!ZQ强制退出(即使文件未保存)
:wqa保存所有标签页,并全部退出
工具推荐
← 回首页