vim 常用命令合集

Jayson
2025-10-08 / / 18 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年10月08日,已超过36天没有更新,若内容或图片失效,请留言反馈。

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,Ww
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=backf=forward
Ctrl + d/u向下/向上滚动半屏比整屏翻页更精准,查看相邻内容

三、插入模式(输入文本)

从普通模式进入“编辑状态”,完成输入后按 Esc 返回普通模式。

命令 / 快捷键功能描述实用场景举例
i光标前插入光标在 he_llo 处,按 ilhell_lo
I行首非空白符前插入代码行前加注释(I//
a光标后插入光标在 h_ello 处,按 aehe_llo
A行尾插入行尾补分号(A;)或注释
o/O在当前行下方/上方新建行并插入插入新代码行(比回车更高效)
ea当前单词末尾后插入word → 按 ea_sword_s
插入模式编辑Ctrl + h删除光标前1个字符(同退格键)输入错误无需按 Esc 回退
Ctrl + w删除光标前1个单词(空格/标点分隔)输错单词快速删除(如 heloCtrl + w
Ctrl + j另起一行(不触发自动缩进)手动控制换行时用
Ctrl + t/d向右/向左缩进当前行(按 shiftwidth 设定)编辑代码调整缩进,不退出插入模式
自动补全Ctrl + n/p下一个/上一个补全候选(基于文件内容)输入变量名/函数名时快速补全
Ctrl + r x插入 x 寄存器内容(x 为寄存器名)插入复制内容,不退出插入模式
Esc退出插入模式,返回普通模式所有插入操作结束后必须按

四、编辑文本(普通模式)

无需进入插入模式,直接修改、删除、调整文本格式。

命令 / 快捷键功能描述补充说明
r替换当前1个字符(无需插入模式)helo → 光标在 o 前,按 rhhello
J/gJ合并下一行到当前行(J 加空格,gJ 不加)line1 + line2line1 line2J)或 line1line2gJ
gwip重新调整段落格式(自动换行对齐)粘贴文本后格式混乱时快速排版
大小写转换g~切换选中文本大小写(需可视化模式)HELLOhello
gu将选中文本转为小写(需可视化模式)
gU将选中文本转为大写(需可视化模式)
删除并插入cc/S删除当前行,进入插入模式整行重写(比 ddi 更高效)
C/c$删除光标到行尾内容,进入插入模式int a = 1; → 光标在 a 后,按 Ca = 2;
ciw删除当前单词,进入插入模式apple → 按 ciwbananabanana
cw删除光标到单词结尾,进入插入模式helo → 光标在 e 后,按 cwllohello
s删除当前字符,进入插入模式替换单个字符(比 ri 少按1次键)
字符调整xp交换当前字符和下一个字符(字符后移)teh → 光标在 e 上,按 xpthe
撤销/重做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复制选中内容到寄存器xx 可替换 a-z保留多个复制内容:"ay 存第一段,"by 存第二段
"xp粘贴寄存器x中的内容粘贴第二段用 "bp
"+y/"+p复制到/粘贴自系统剪贴板(跨程序通用)Vim 内容复制到浏览器/文档,或粘贴外部内容到Vim

七、标记和位置(快速回跳)

对关键位置做“标记”,或通过历史记录回跳,避免重复定位。

命令 / 快捷键功能描述实用场景举例
:marks查看所有标记列表忘记标记位置时用
ma在当前位置设置标记aa 可替换 a-z函数开头按 mf 做标记
`a 跳转到标记a的位置(精准到字符)编辑函数内部后,按 `f 回开头
`0 跳转到Vim上一次退出时的位置重新打开文件后回上次编辑处
`" 跳转到文件上次编辑时的位置打开旧文件后定位历史修改点
`. 跳转到文件最后一次修改的位置修改后检查效果,按 `. 回跳
``跳转到上一次跳转前的位置gg 到文件开头后,按 回原位置
跳转历史:ju[mps]查看所有跳转记录(行号/标记跳转)回退到更早定位时用
Ctrl + i/o跳转到跳转历史的较新/较旧位置类似浏览器前进/后退键
修改历史:changes查看所有修改记录(何时修改哪行)追踪文本修改轨迹
g,/g;跳转到修改历史的较新/较旧位置检查之前修改内容时用
标签跳转Ctrl + ]跳转到光标所在标签的定义处(需支持标签)编辑代码时查看函数/变量定义

八、宏(批量执行重复操作)

录制一组操作后重复执行,适用于“相同操作需执行多次”的场景(如批量修改格式)。

命令 / 快捷键功能描述操作流程示例(批量给行首加 //
qa开始录制宏,存入寄存器aa 可替换)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
0