本文整理自 vim cheat sheet 与实际使用经验,覆盖从基本移动、插入、编辑、寄存器、宏、折叠到 diff 模式等常用命令,适合日常参考使用。
📚 基础命令#
命令 |
说明 |
:h {keyword} |
查看帮助文档 |
:saveas {文件名} |
另存为 |
:close |
关闭当前窗口 |
:terminal |
打开终端窗口 |
vimtutor |
启动 Vim 教程 |
🚶 光标移动#
命令 |
说明 |
h |
左移一个字符 |
j |
下移一行 |
k |
上移一行 |
l |
右移一个字符 |
0 |
移动到行首 |
^ |
移动到本行第一个非空字符 |
$ |
移动到行尾 |
w |
跳到下一个单词开头 |
e |
跳到单词末尾 |
b |
跳到上一个单词开头 |
gg |
跳到文件首行 |
G |
跳到文件尾行 |
H |
移动到屏幕顶部 |
M |
移动到屏幕中间 |
L |
移动到屏幕底部 |
Ctrl+d |
向下滚动半屏 |
Ctrl+u |
向上滚动半屏 |
Ctrl+f |
向下滚动一屏 |
Ctrl+b |
向上滚动一屏 |
% |
跳转到匹配的括号 |
📝 插入模式#
命令 |
说明 |
i |
在光标前插入 |
I |
在行首插入 |
a |
在光标后插入 |
A |
在行尾插入 |
o |
在当前行下方新开一行并插入 |
O |
在当前行上方新开一行并插入 |
ea |
在单词末尾插入 |
Ctrl+h |
删除前一个字符(退格) |
Ctrl+w |
删除前一个单词 |
Ctrl+u |
删除整行插入内容 |
Ctrl+o |
在插入模式下执行一条普通模式命令 |
✂️ 编辑文本#
命令 |
说明 |
r{char} |
替换光标所在字符为{char} |
R |
进入替换模式 |
J |
合并下一行到当前行末尾 |
gJ |
合并下一行到当前行末尾,不加空格 |
cc |
修改整行(删除后进入插入模式) |
cw |
修改从光标到单词末尾 |
ciw |
修改光标所在的整个单词 |
S |
整行替换(等同于 cc) |
s |
删除光标所在字符并进入插入模式 |
xp |
交换光标所在字符与下一字符 |
u |
撤销 |
U |
撤销整行修改 |
. |
重复上一次修改命令 |
🔲 可视化模式与选择#
命令 |
说明 |
v |
进入字符可视模式 |
V |
进入行可视模式 |
Ctrl+v |
进入块可视模式 |
ab |
选择一个块(包括空格) |
ib |
选择一个块(不包括空格) |
at |
选择一个标签块(包括标签) |
it |
选择一个标签块(不包括标签) |
📋 剪切、复制、粘贴#
命令 |
说明 |
yy |
复制当前行 |
dd |
删除当前行(剪切) |
p |
粘贴到光标后 |
P |
粘贴到光标前 |
gp |
粘贴后光标停留在文本末尾 |
diw |
删除光标所在单词 |
yaw |
复制光标所在单词(包括空格) |
daw |
删除光标所在单词(包括空格) |
:d |
删除当前行 |
:.,$d |
删除从当前行到文件末尾 |
:g/{pattern}/d |
删除所有匹配模式的行 |
🧠 寄存器#
Vim 中的寄存器用于存储文本,常用寄存器如下:
寄存器 |
说明 |
" |
默认寄存器,保存最近的删除或复制内容 |
0 |
保存最近的复制(yank)内容 |
1 - 9 |
保存最近的删除内容,1 是最近一次,9 是最旧的 |
- |
保存最近的小删除内容(小于一行) |
. |
保存上一次插入的文本 |
% |
当前文件名 |
: |
最近执行的命令 |
# |
上一个文件名 |
_ |
黑洞寄存器,丢弃内容(删除时不保存) |
+ |
系统剪贴板(X11、Windows 剪贴板) |
* |
选择缓冲区(鼠标选择时) |
= |
表达式寄存器,可以执行表达式并插入结果 |
使用示例:
"ayy
复制当前行到寄存器 a
"ap
粘贴寄存器 a 的内容
🔖 标记与跳转#
命令 |
说明 |
ma |
在当前光标位置设置标记 a |
`a |
跳转到标记 a 的精确位置 |
'a |
跳转到标记 a 所在行首 |
'. |
跳转到上次编辑位置 |
`` |
跳转到上次跳转位置 |
:marks |
列出所有标记 |
Ctrl+i |
前进跳转位置(类似浏览器前进) |
Ctrl+o |
后退跳转位置(类似浏览器后退) |
g; |
跳转到上一个修改位置 |
g, |
跳转到下一个修改位置 |
🎬 宏录制与执行#
命令 |
说明 |
qa |
开始录制宏到寄存器 a |
q |
停止录制 |
@a |
执行寄存器 a 中的宏 |
@@ |
重复执行上次宏 |
🔍 查找与替换#
命令 |
说明 |
/pattern |
向下搜索 pattern |
?pattern |
向上搜索 pattern |
n |
重复上次搜索,方向相同 |
N |
重复上次搜索,方向相反 |
:%s/old/new/g |
全文替换 old 为 new |
:noh |
取消高亮搜索结果 |
:vimgrep /pattern/ {files} |
在指定文件中搜索 pattern |
:cn |
跳转到下一个搜索结果 |
:cp |
跳转到上一个搜索结果 |
💾 保存与退出#
命令 |
说明 |
:w |
保存文件 |
:q |
退出 |
:wq |
保存并退出 |
ZZ |
保存并退出(快捷键) |
:w !sudo tee % |
以 sudo 权限保存文件 |
:wqa |
保存所有文件并退出 |
🗂 多文件编辑与窗口操作#
命令 |
说明 |
:e {filename} |
打开指定文件 |
:bn |
切换到下一个缓冲区 |
:bp |
切换到上一个缓冲区 |
:b {buffer} |
切换到指定缓冲区 |
:ls |
列出所有缓冲区 |
:split 或 :sp |
水平分割窗口 |
:vsplit 或 :vsp |
垂直分割窗口 |
Ctrl+w s |
水平分割 |
Ctrl+w v |
垂直分割 |
Ctrl+w w |
切换窗口 |
Ctrl+w h/j/k/l |
移动到左/下/上/右窗口 |
Ctrl+w c |
关闭当前窗口 |
Ctrl+w o |
关闭其他窗口 |
🧩 标签页管理#
命令 |
说明 |
:tabnew |
新建标签页 |
gt |
切换到下一个标签页 |
gT |
切换到上一个标签页 |
:tabclose |
关闭当前标签页 |
:tabdo {cmd} |
在所有标签页执行命令 |
📐 缩进#
命令 |
说明 |
<< |
左缩进一层 |
>> |
右缩进一层 |
= |
自动缩进当前行或选中区域 |
>ib |
右缩进块内内容 |
<at |
左缩进标签内内容 |
gg=G |
自动缩进整个文件 |
]p |
粘贴并调整缩进 |
🎭 折叠#
命令 |
说明 |
za |
折叠/展开当前折叠 |
zo |
展开当前折叠 |
zc |
折叠当前折叠 |
zr |
减少折叠级别,展开更多 |
zm |
增加折叠级别,折叠更多 |
zi |
切换折叠功能开关 |
🔍 Diff 模式#
命令 |
说明 |
:diffthis |
当前窗口进入 diff 模式 |
do |
将差异内容从另一窗口合并到当前窗口 |
dp |
将差异内容从当前窗口合并到另一窗口 |
:diffoff |
关闭 diff 模式 |
]c |
跳转到下一个差异块 |
[c |
跳转到上一个差异块 |
📌 本文适合长期查阅,如有遗漏可参考 Vim 内部帮助文档 :h
或 vim.rtorr.com。