本文整理自 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 内部帮助文档 :hvim.rtorr.com