Vim编辑器核心命令速查表(完整版)
Vim 是一款高效的终端文本编辑器,其核心优势在于无需鼠标的纯键盘操作和可自定义的工作流。本文整理了 Vim 从基础到高级的核心命令,按功能模块分类,方便日常查阅和效率提升。
一、基础全局命令
需在普通模式(非插入模式)下输入 : 后执行,用于文件管理、帮助查询等核心操作。
| 命令 / 快捷键 | 功能描述 | 实用场景举例 |
|---|---|---|
:h[elp] 关键字 | 显示指定关键字的官方帮助(最权威学习工具) | 忘记 dd 用法时,输入 :h dd |
:sav[eas] 文件名 | 另存为指定文件(原文件保留) | 编辑临时文件后保存为正式文件 |
:clo[se] | 关闭当前窗口(最后一个窗口则退出Vim) | 多窗口编辑时关闭无用窗口 |
:ter[minal] | 在Vim中打开新终端窗口(无需切出Vim) | 编辑代码时临时执行 make 等命令 |
K | 打开光标所在单词的 man 手册页 | 查看Linux命令/函数详细说明 |
二、光标移动(普通模式)
Vim 效率核心之一,无需鼠标即可精准定位,熟记后大幅提升操作速度。
| 分类 | 命令 / 快捷键 | 功能描述 | 补充说明 |
|---|---|---|---|
| 基础方向 | h/j/k/l | 左/下/上/右移1个字符 | 替代方向键,手无需离开主键盘区 |
| 页面定位 | H/M/L | 移动到当前页面顶部/中间/底部 | 快速跳转页面内关键位置 |
| 单词级移动 | w/W | 移动到下个单词开头(W 含标点视为单词) | 例:hello, world 中,w 跳 ,,W 跳 w |
e/E | 移动到下个单词结尾(E 含标点视为单词) | 修改单词末尾时用(如加s变复数) | |
b/B | 移动到上个单词开头(B 含标点视为单词) | 回退修改时定位前一个单词 | |
| 行内定位 | 0 | 移动到行首(含空白符) | 行首插入内容时用 |
^ | 移动到行首第一个非空白符 | 编辑代码时定位行内有效内容开头 | |
$/g_ | 移动到行尾/行内最后一个非空白符 | 行尾补分号用 $a; | |
| 文件级定位 | gg/G | 移动到文件第一行/最后一行 | 查看文件开头注释或结尾 return 语句 |
5gg/5G | 移动到第5行(数字可替换) | 跳转编译报错行(如 100G 到第100行) | |
| 字符搜索定位 | fx/Fx | 跳转到字符 x 下次/上次出现位置 | 找行内 ( 用 f(,找 ) 用 f) |
tx/Tx | 跳转到字符 x 附近(前一个/后一个字符) | 目标字符前插入内容用 tx + a | |
;/, | 重复/反向重复上一次 f/t/F/T 操作 | 连续找相同字符无需重复输入 fx | |
| 段落/代码块定位 | }/{ | 移动到下一个/上一个段落(代码中为函数块) | 编辑多函数代码时切换函数 |
| 屏幕调整 | zz | 使光标所在行居中显示 | 光标在页面边缘时聚焦视线 |
Ctrl + e/y | 向下/向上滚动1行(光标不动) | 查看光标下方/上方内容 | |
Ctrl + b/f | 向上/向下滚动一整屏 | 快速翻页(b=back,f=forward) | |
Ctrl + d/u | 向下/向上滚动半屏 | 比整屏翻页更精准,查看相邻内容 |
三、插入模式(输入文本)
从普通模式进入“编辑状态”,完成输入后按 Esc 返回普通模式。
| 命令 / 快捷键 | 功能描述 | 实用场景举例 | |
|---|---|---|---|
i | 从光标前插入 | 光标在 he_llo 处,按 i 输 l 成 hell_lo | |
I | 从行首非空白符前插入 | 代码行前加注释(I//) | |
a | 从光标后插入 | 光标在 h_ello 处,按 a 输 e 成 he_llo | |
A | 从行尾插入 | 行尾补分号(A;)或注释 | |
o/O | 在当前行下方/上方新建行并插入 | 插入新代码行(比回车更高效) | |
ea | 从当前单词末尾后插入 | word → 按 ea 输 _s 成 word_s | |
| 插入模式编辑 | Ctrl + h | 删除光标前1个字符(同退格键) | 输入错误无需按 Esc 回退 |
Ctrl + w | 删除光标前1个单词(空格/标点分隔) | 输错单词快速删除(如 helo → Ctrl + w) | |
Ctrl + j | 另起一行(不触发自动缩进) | 手动控制换行时用 | |
Ctrl + t/d | 向右/向左缩进当前行(按 shiftwidth 设定) | 编辑代码调整缩进,不退出插入模式 | |
| 自动补全 | Ctrl + n/p | 下一个/上一个补全候选(基于文件内容) | 输入变量名/函数名时快速补全 |
Ctrl + r x | 插入 x 寄存器内容(x 为寄存器名) | 插入复制内容,不退出插入模式 | |
Esc | 退出插入模式,返回普通模式 | 所有插入操作结束后必须按 |
四、编辑文本(普通模式)
无需进入插入模式,直接修改、删除、调整文本格式。
| 命令 / 快捷键 | 功能描述 | 补充说明 | |
|---|---|---|---|
r | 替换当前1个字符(无需插入模式) | helo → 光标在 o 前,按 rh 成 hello | |
J/gJ | 合并下一行到当前行(J 加空格,gJ 不加) | line1 + line2 → line1 line2(J)或 line1line2(gJ) | |
gwip | 重新调整段落格式(自动换行对齐) | 粘贴文本后格式混乱时快速排版 | |
| 大小写转换 | g~ | 切换选中文本大小写(需可视化模式) | HELLO ↔ hello |
gu | 将选中文本转为小写(需可视化模式) | ||
gU | 将选中文本转为大写(需可视化模式) | ||
| 删除并插入 | cc/S | 删除当前行,进入插入模式 | 整行重写(比 ddi 更高效) |
C/c$ | 删除光标到行尾内容,进入插入模式 | int a = 1; → 光标在 a 后,按 C 改 a = 2; | |
ciw | 删除当前单词,进入插入模式 | apple → 按 ciw 输 banana 成 banana | |
cw | 删除光标到单词结尾,进入插入模式 | helo → 光标在 e 后,按 cw 输 llo 成 hello | |
s | 删除当前字符,进入插入模式 | 替换单个字符(比 ri 少按1次键) | |
| 字符调整 | xp | 交换当前字符和下一个字符(字符后移) | teh → 光标在 e 上,按 xp 成 the |
| 撤销/重做 | u | 撤销上一次操作(可多次撤销) | 误删 dd 后按 u 恢复 |
U | 撤销对当前行的所有修改(仅恢复当前行) | 行内多次修改后恢复原行 | |
Ctrl + r | 重做上一次被撤销的操作(反撤销) | 撤销多了想恢复之前修改时用 | |
. | 重复上一次修改类命令(Vim核心效率键) | 连续删除多行:dd 后按 .;连续加 ;:A; 后按 . |
五、可视化模式(选中文本)
先选中目标文本,再执行复制、删除等操作,普通模式下按对应键进入。
| 模式类型 | 进入命令 | 功能描述 | 适用场景 |
|---|---|---|---|
| 字符可视化 | v | 按字符选中(拖动光标选任意范围) | 选中零散字符(如单词中的几个字母) |
| 行可视化 | V | 按行选中(光标上下移动,整行选中) | 选中多行代码(删除/复制连续行) |
| 列可视化(矩阵) | Ctrl + v | 按列选中(垂直选择,支持矩形区域) | 批量编辑列内容(如给多行加 // 注释) |
可视化模式常用操作
选中内容后,按以下键执行操作:
| 命令 / 快捷键 | 功能描述 | |
|---|---|---|
>/< | 选中内容向右/向左缩进 | |
y | 复制选中内容到默认寄存器 | |
d | 剪切选中内容(删除并复制) | |
~ | 切换选中内容的大小写 | |
u/U | 选中内容转为小写/大写 | |
o/O | 切换光标在选中区域的开头/结尾/对角 | 调整选中范围时用 |
Esc | 退出可视化模式,返回普通模式 |
六、寄存器(复制/剪切的“容器”)
Vim 复制/剪切内容存入“寄存器”,默认用匿名寄存器(""),可指定自定义寄存器(a-z)避免覆盖。
| 命令 / 快捷键 | 功能描述 | 实用场景举例 |
|---|---|---|
:reg[isters] | 查看所有寄存器内容(确认复制结果) | 忘记复制内容存哪个寄存器时用 |
"xy | 复制选中内容到寄存器x(x 可替换 a-z) | 保留多个复制内容:"ay 存第一段,"by 存第二段 |
"xp | 粘贴寄存器x中的内容 | 粘贴第二段用 "bp |
"+y/"+p | 复制到/粘贴自系统剪贴板(跨程序通用) | Vim 内容复制到浏览器/文档,或粘贴外部内容到Vim |
七、标记和位置(快速回跳)
对关键位置做“标记”,或通过历史记录回跳,避免重复定位。
| 命令 / 快捷键 | 功能描述 | 实用场景举例 | |
|---|---|---|---|
:marks | 查看所有标记列表 | 忘记标记位置时用 | |
ma | 在当前位置设置标记a(a 可替换 a-z) | 函数开头按 mf 做标记 | |
`a | 跳转到标记a的位置(精准到字符) | 编辑函数内部后,按 `f 回开头 | |
`0 | 跳转到Vim上一次退出时的位置 | 重新打开文件后回上次编辑处 | |
`" | 跳转到文件上次编辑时的位置 | 打开旧文件后定位历史修改点 | |
`. | 跳转到文件最后一次修改的位置 | 修改后检查效果,按 `. 回跳 | |
`` | 跳转到上一次跳转前的位置 | gg 到文件开头后,按 回原位置 | |
| 跳转历史 | :ju[mps] | 查看所有跳转记录(行号/标记跳转) | 回退到更早定位时用 |
Ctrl + i/o | 跳转到跳转历史的较新/较旧位置 | 类似浏览器前进/后退键 | |
| 修改历史 | :changes | 查看所有修改记录(何时修改哪行) | 追踪文本修改轨迹 |
g,/g; | 跳转到修改历史的较新/较旧位置 | 检查之前修改内容时用 | |
| 标签跳转 | Ctrl + ] | 跳转到光标所在标签的定义处(需支持标签) | 编辑代码时查看函数/变量定义 |
八、宏(批量执行重复操作)
录制一组操作后重复执行,适用于“相同操作需执行多次”的场景(如批量修改格式)。
| 命令 / 快捷键 | 功能描述 | 操作流程示例(批量给行首加 //) |
|---|---|---|
qa | 开始录制宏,存入寄存器a(a 可替换) | 1. 按 qa 开始录制 |
q | 停止录制宏 | 2. 执行操作:I//(加注释)+ Esc + j(下一行)3. 按 q 停止 |
@a | 执行寄存器a中的宏 | 4. 按 @a 执行1次,给下一行加注释 |
@@ | 重复执行上一次执行的宏 | 5. 按 @@ 批量处理剩余行 |
九、复制、剪切、粘贴(普通模式)
直接对行/单词/字符进行操作,无需先选中(可视化模式也可配合使用)。
| 操作类型 | 命令 / 快捷键 | 功能描述 | 示例(以 hello world 为例) |
|---|---|---|---|
| 复制 | yy | 复制当前行 | 光标在行上,按 yy 复制整行 |
2yy | 复制从当前行开始的2行(数字可替换) | 按 3yy 复制当前行+下2行 | |
yw | 复制当前单词(从光标到单词结尾) | 光标在 h 上,按 yw 复制 hello | |
y$ | 复制从光标到行尾的内容 | 光标在 h 上,按 y$ 复制 hello world |