Vim作为一款功能强大的文本编辑器,其命令体系丰富且高效,掌握这些命令能极大提升编辑效率,以下从基础操作、光标移动、文本编辑、搜索替换、窗口管理等多方面详细整理Vim命令合集,帮助用户系统学习。

基础操作与模式切换
Vim的核心在于模式,不同模式下执行的命令完全不同,首先需熟悉三种基本模式:
- 普通模式(Normal Mode):默认模式,用于导航和执行命令,通过
Esc键进入。 - 插入模式(Insert Mode):用于文本输入,可通过
i(光标前插入)、a(光标后插入)、o(当前行下方新建行插入)等命令进入。 - 可视模式(Visual Mode):用于选择文本,分为字符可视模式(
v)、行可视模式(V)、块可视模式(Ctrl+v),选中后可进行复制、删除等操作。
其他常用模式:
- 命令行模式(Command-Line Mode):通过进入,用于保存文件(
w)、退出(q)、搜索(/string)等。 - 替换模式(Replace Mode):通过
R进入,可直接替换光标处字符。
光标移动(普通模式)
光标快速移动是高效编辑的基础,以下为常用移动命令:
- 基本移动:
h:左移一个字符,l:右移一个字符,j:下移一行,k:上移一行。w:移动到下一个单词开头,e:移动到当前单词末尾,b:移动到上一个单词开头。0(数字零):移动到行首,:移动到行尾,^:移动到行首非空白字符。
- 行间与文件范围移动:
gg:跳转到文件第一行,G:跳转到文件最后一行,nG(如5G):跳转到第n行。Ctrl+f:向下翻页,Ctrl+b:向上翻页,Ctrl+d:向下半页翻页,Ctrl+u:向上半页翻页。
- 相对位置移动:
n|:移动到行第n列(如5|:移动到第5列)。- 匹配括号(如、
[]、)跳转,:跳转到当前单词下一次出现位置,:跳转到当前单词上一次出现位置。
文本编辑(普通/插入/可视模式)
删除与剪切
- 普通模式删除:
x:删除光标处字符,nx(如3x):删除光标后3个字符。dd:删除当前行,ndd(如5dd):删除当前行及后续4行共5行。d^:删除到行首非空白字符,d$:删除到行尾,dw:删除一个单词。
- 剪切与粘贴:
- 剪切本质是删除+复制,
dd剪切一行,d+移动命令(如dw、dG)剪切指定范围。 p:在光标后粘贴,P:在光标前粘贴,np(如2p):粘贴n次。
- 剪切本质是删除+复制,
复制与粘贴
- 复制命令:
y(yank)用于复制,yy:复制当前行,nyy:复制n行。yw:复制一个单词,y$:复制到行尾,y^:复制到行首非空白字符。- 可视模式下选中后,
y复制选中内容。
撤销与重做
u:撤销上一步操作,Ctrl+r:重做(撤销的反向操作)。U:撤销对当前行的所有修改(光标在行内时有效)。
修改与替换
- 插入模式进入:
i:光标前插入,a:光标后插入,I:行首插入,A:行尾插入。o:当前行下方新开一行插入,O:当前行上方新开一行插入。
- 普通模式修改:
r:替换光标处单个字符(如rx将光标处字符改为x),R:进入替换模式,连续替换直到Esc。c(change)修改后自动进入插入模式,如cc:修改当前行(删除后进入插入模式),cw:修改一个单词。
搜索与替换(命令行模式)
- 搜索文本:
/string:从光标处向下搜索string,?string:向上搜索。n:跳转到下一个搜索结果,N:跳转到上一个搜索结果。- 搜索时忽略大小写:
set ic(ic为ignorecase缩写),恢复大小写敏感:set noic。
- 替换文本:
s/old/new:替换当前行中第一个old为new。s/old/new/g:替换当前行中所有old为new(g为global缩写)。%s/old/new/g:替换整个文件中所有old为new,需确认可加c(%s/old/new/gc,替换前提示)。
窗口与标签管理
- 窗口分割:
split(或sp):水平分割窗口,vsplit(或vs):垂直分割窗口。Ctrl+w+w:在窗口间切换,Ctrl+w+h/j/k/l:切换到左/下/上/右窗口。close:关闭当前窗口,only:关闭其他窗口,保留当前窗口。
- 标签页管理:
tabnew(或tn):新建标签页,tabn(或tabnext):切换到下一个标签页,tabp(或tabprevious):切换到上一个标签页。gt:下一个标签页,gT:上一个标签页,tabm n:将当前标签页移动到第n位(如tabm 0移到最前)。
高级操作技巧
- 文本对象操作:
- 文本对象针对“块”进行操作,格式为
[动作][文本对象],如d":删除双引号内的内容,ci(:修改括号内的内容(删除并进入插入模式)。 - 常用文本对象:
w(单词)、s(句子)、p(段落)、(双引号)、(单引号)、(括号)、(花括号)、[(方括号)。
- 文本对象针对“块”进行操作,格式为
- 宏录制与执行:
q+寄存器名(如qa)开始录制宏,q结束录制,+寄存器名(如@a)执行宏,重复执行上一次宏。
- 自动补全与缩进:
Ctrl+x Ctrl+f:补全文件名,Ctrl+x Ctrl+l:补全整行,Ctrl+n:基于当前文件内容补全。>>:当前行右缩进,<<:当前行左缩进,>>+视觉块选择可批量缩进。
实用命令速查表
| 功能分类 | 命令 | 说明 |
|---|---|---|
| 模式切换 | Esc |
返回普通模式 |
i/a/o |
进入插入模式(光标前/后/新行) | |
v/V/Ctrl+v |
进入字符/行/块可视模式 | |
| 光标移动 | hjkl |
左/下/上/右移动 |
w/e/b |
单词开头/末尾/上一个开头 | |
gg/G/nG |
文件首/尾/第n行 | |
| 删除 | x/dd/dw |
删除字符/行/单词 |
| 复制 | yy/yw/y$ |
复制行/单词/到行尾 |
| 粘贴 | p/P |
光标后/前粘贴 |
| 撤销/重做 | u/Ctrl+r |
撤销/重做 |
| 搜索 | /string/?string |
向下/向上搜索 |
| 替换 | %s/old/new/g |
全局替换 |
| 窗口分割 | sp/vs |
水平/垂直分割窗口 |
| 标签页 | tabnew/gt/gT |
新建标签页/切换标签页 |
相关问答FAQs
Q1:如何在Vim中同时编辑多个文件?
A:Vim可通过缓冲区(Buffer)和标签页(Tabpage)管理多个文件。

- 缓冲区操作:
bnext(切换到下一个缓冲区)、bprev(上一个缓冲区)、b filename(打开或切换到指定文件缓冲区)、ls(列出所有缓冲区)。 - 标签页操作:
tabnew filename(新建标签页并打开文件)、tabn/tabp(切换标签页)、tabm n(调整标签页顺序)。
窗口分割(split/vsplit)可在同一界面同时显示多个文件,通过Ctrl+w+w切换窗口。
Q2:如何高效删除Vim中的空行或特定模式的行?
A:可通过命令行模式结合正则表达式批量删除:
- 删除所有空行:
g/^$/d(g全局执行,/^$匹配空行,d删除)。 - 删除包含特定模式的行(如删除含“TODO”的行):
g/TODO/d。 - 删除不包含特定模式的行(如保留含“NOTE”的行):
v/NOTE/d(v为g!缩写,取反匹配)。
若需确认删除,可在命令后加c(如g/^$/dc),删除前会提示确认。

