Vim 是一款功能强大但学习曲线陡峭的文本编辑器,核心在于其模式化操作。掌握常用指令能极大提升效率。以下是指令分类整理:
一、核心模式切换 (必须掌握!)
-
i
:在光标前 进入插入模式 (Insert Mode)
-
a
:在光标后 进入插入模式 (Insert Mode)
-
o
:在下方新建一行并进入插入模式 -
O
:在上方新建一行并进入插入模式 -
ESC
或Ctrl+[
:退出 当前模式,回到普通模式 (Normal Mode)
- 最常用! -
v
:进入可视模式 (Visual Mode)
(字符选择) -
V
:进入可视行模式 (Visual Line Mode)
(行选择) -
Ctrl+v
:进入可视块模式 (Visual Block Mode)
(列块选择) -
:
:进入命令行模式 (Command-Line Mode)
⚠️ 牢记:大部分时间你在
普通模式
! 编辑完记得按ESC
返回普通模式。
二、移动光标 (普通模式下)
-
基本移动:
-
h
←,j
↓,k
↑,l
→ (或方向键) -
w
/W
:跳到下一个单词开头 (W忽略标点) -
b
/B
:跳到上一个单词开头 (B忽略标点) -
e
/E
:跳到当前/下一个单词结尾 (E忽略标点) -
0
(零) :跳到行首 -
^
:跳到行首第一个非空白字符 -
$
:跳到行尾 -
gg
:跳到文件第一行 -
G
:跳到文件最后一行 -
:[行号]
+回车
:跳到指定行 (如:10
跳到第10行) -
Ctrl+f
:向下翻页 -
Ctrl+b
:向上翻页 -
Ctrl+d
:向下翻半页 -
Ctrl+u
:向上翻半页 -
H
:跳到当前屏幕顶部 -
M
:跳到当前屏幕中间 -
L
:跳到当前屏幕底部
-
-
查找移动:
-
/
+关键词
+回车
:向下 搜索关键词 (如/hello
) -
?
+关键词
+回车
:向上搜索关键词 -
n
:查找下一个匹配项 -
N
:查找上一个匹配项 -
f
+字符
:将光标移动到当前行 下一个指定的字符 上 (如fa
找下一个a
) -
F
+字符
:将光标移动到当前行 上一个指定的字符上 -
t
+字符
:将光标移动到当前行 下一个指定的字符前
-
T
+字符
:将光标移动到当前行 上一个指定的字符后
-
%
:在配对的括号()
,[]
,{}
之间跳转
-
三、编辑文本 (普通模式下)
-
删除:
-
x
:删除光标下的字符 -
X
:删除光标前的字符 -
dw
:从光标位置删除到下一个单词开头 -
d$
或D
:从光标位置删除到行尾 -
d0
:从光标位置删除到行首 -
dd
:删除整行 -
[数字]dd
:删除从光标开始的指定行数 (如3dd
删除3行) -
daw
:删除光标所在的单词 (包括周围空格) -
diw
:删除光标所在的单词 (不包括周围空格)
-
-
复制 (yank):
-
yy
:复制整行 -
[数字]yy
:复制从光标开始的指定行数 (如3yy
复制3行) -
yw
:复制从光标到下一个单词开头的文本 -
y$
:复制从光标到行尾的文本 -
y0
:复制从光标到行首的文本
-
-
粘贴 (put):
-
p
:在光标后粘贴 -
P
:在光标前粘贴
-
-
撤销/重做:
-
u
:撤销上一次操作 -
Ctrl+r
:重做 (撤销掉撤销)
-
-
修改/替换:
-
r
+字符
:替换 光标下的字符 (如ra
替换成a
) -
R
:进入替换模式 (连续替换多个字符,按ESC
退出) -
cw
:删除 从光标到单词结尾 并进入插入模式 (Change Word) -
c$
/C
:删除 从光标到行尾 并进入插入模式 -
cc
/S
:删除整行 并进入插入模式 -
s
:删除光标下的字符 并进入插入模式 -
~
:切换光标下字符的大小写
-
-
缩进:
-
>>
:当前行增加缩进 -
<<
:当前行减少缩进 -
=
:自动缩进当前行 (或选中的行/块)
-
四、可视模式操作 (先按 v
, V
, Ctrl+v
选中)
-
选中文本后,可以使用普通模式下的编辑命令:
-
d
/x
:删除选中文本 -
y
:复制选中文本 -
c
:删除选中文本并进入插入模式 -
>
:增加缩进 -
<
:减少缩进 -
=
:自动缩进 -
u
:将选中文本转为小写 -
U
:将选中文本转为大写
-
五、命令行模式 (按 :
进入)
-
文件操作:
-
:w
:保存文件 -
:w [文件名]
:另存为到指定文件名 -
:q
:退出 Vim (如果文件未修改) -
:q!
:强制退出 Vim (不保存修改) -
:wq
或:x
或ZZ
:保存并退出 -
:e [文件名]
:打开另一个文件进行编辑
-
-
搜索与替换:
-
:%s/old/new/g
:全局替换 所有old
为new
-
:%s/old/new/gc
:全局替换,每次替换前询问确认 -
:s/old/new/g
:替换当前行 的所有old
为new
-
:起始行,结束行s/old/new/g
:替换指定行范围 的所有old
为new
(如:10,20s/foo/bar/g
)
-
-
其他常用:
-
:set nu
:显示行号 -
:set nonu
:隐藏行号 -
:set hlsearch
:高亮显示搜索结果 -
:set nohlsearch
或:nohl
:关闭搜索结果高亮 (临时) -
:help [命令]
:查看帮助 (如:help w
) -
:! [shell命令]
:执行外部 shell 命令 (如:! ls
) -
:r [文件名]
:读取文件内容并插入到光标后 -
:r ! [shell命令]
:读取 shell 命令的输出 并插入到光标后 (如:r ! date
)
-
六、组合与重复
-
操作符 + 动作 = 强大功能
-
d
(删除) +w
(单词) =dw
(删到单词尾) -
c
(修改) +$
(行尾) =c$
(修改到行尾) -
y
(复制) +}
(下一段) =y}
(复制下一段)
-
-
数字前缀:重复执行
-
5j
:向下移动5行 -
3dw
:删除3个单词 -
10x
:删除10个字符 -
4p
:粘贴4次
-
七、实用技巧
-
.
(点命令): 重复上一次的编辑操作 (在普通模式下)。 -
宏录制:
-
q
+寄存器字母
(如qa
):开始录制宏到寄存器a
-
执行一系列操作
-
q
:停止录制 -
@
+寄存器字母
(如@a
):执行存储在寄存器a
中的宏 -
@@
:重复执行上一次执行的宏
-
-
分屏:
-
:sp [文件名]
:水平分割窗口 (打开/切换文件) -
:vsp [文件名]
:垂直分割窗口 (打开/切换文件) -
Ctrl+w
+方向键
/h/j/k/l
:在窗口间切换焦点 -
Ctrl+w
+w
:循环切换窗口 -
Ctrl+w
+c
:关闭当前窗口 -
Ctrl+w
+q
:关闭当前窗口 (如果只剩一个窗口则退出Vim) -
Ctrl+w
+=
:使所有窗口等宽等高 -
Ctrl+w
+_
:最大化当前窗口高度 -
Ctrl+w
+|
:最大化当前窗口宽度
-
-
标签页:
-
:tabnew [文件名]
:在新标签页打开文件 -
gt
/gT
:切换到下一个/上一个标签页 -
:tabn
/:tabp
:切换到下一个/上一个标签页 (命令模式) -
:tabc
:关闭当前标签页
-
八、配置 (~/.vimrc)
-
创建或编辑
~/.vimrc
文件来自定义 Vim 行为。常用设置示例:
set number " 显示行号
set relativenumber " 显示相对行号 (可选)
syntax on " 语法高亮
set tabstop=4 " Tab键宽度为4空格
set shiftwidth=4 " 自动缩进宽度为4空格
set expandtab " 将Tab转换为空格
set autoindent " 自动缩进
set smartindent " 智能缩进
set hlsearch " 高亮搜索结果
set ignorecase " 搜索忽略大小写
set smartcase " 如果搜索包含大写则区分大小写
set mouse=a " 启用鼠标支持 (可选)
学习建议
-
先掌握核心: 模式切换 (
i
,ESC
)、保存退出 (:wq
,:q!
)、基本移动 (hjkl
)、删除 (x
,dd
)、复制粘贴 (yy
,p
)、撤销 (u
)。这是生存技能。 -
练习移动: 高效移动是Vim的灵魂。熟练掌握
w
,b
,e
,$
,0
,gg
,G
,/
。 -
理解
操作符 + 动作
范式: 这是Vim编辑能力的核心 (d
,c
,y
+w
,$
,t
等)。 -
逐步学习: 不要试图一次记住所有命令。在日常编辑中刻意练习新学的1-2个命令。
-
善用帮助:
:help
是宝藏。遇到不熟悉的命令随时查 (:help x
,:help :w
等)。 -
使用 Vim Tutor: 在终端中输入
vimtutor
,这是官方交互式教程,强烈推荐初学者完成。
Vim 的精髓在于组合和效率。 熟练后,你的手指几乎不用离开主键盘区就能完成复杂编辑。