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
),删除前会提示确认。
