Vim 编辑器完全指南:模式、移动、编辑与搜索替换

小飞兽 Vim 9 次阅读 2026-07-29

Vim(Vi IMproved)是从 Unix 经典编辑器 Vi 发展而来的文本编辑器,几乎预装在所有 Linux/macOS 系统上。它以模式化编辑著称,不同模式下同一按键功能完全不同。

一、Vim 模式系统

Vim 有 6 种主要模式:

Normal(普通模式)- 启动后默认,用于导航和编辑命令
Insert(插入模式)- i/a/o/s 进入,用于输入文本
Visual(可视模式)- v/V/Ctrl+v 进入,用于选择文本
Command(命令模式)- : 进入,执行命令
Replace(替换模式)- R 进入,直接覆盖文本

切换方式:
i/a/o/s → Insert 模式
Esc → Normal 模式
: → Command 模式
v/V/Ctrl+v → Visual 模式

二、光标移动(Normal 模式)

h / ←         左移一个字符
l / → 右移一个字符
j / ↓ 下移一行
k / ↑ 上移一行

w 前进到下一个词首
b 后退到当前词首
e 前进到当前词尾

0 跳到行首(字符 0)
^ 跳到行首第一个非空字符
$ 跳到行尾
g_ 跳到行尾最后一个非空字符

gg 跳到文件第一行
G 跳到文件最后一行
:n 或 nG 跳到第 n 行

H 跳到屏幕顶部(High)
M 跳到屏幕中间(Middle)
L 跳到屏幕底部(Low)

Ctrl+d 下翻半屏(Down)
Ctrl+u 上翻半屏(Up)
Ctrl+f 下翻一屏(Forward)
Ctrl+b 上翻一屏(Backward)

zz 当前行居中屏幕
zt 当前行置顶
zb 当前行置底

% 跳到匹配括号(()[]{}<>)
f<char> 本行内向右跳到指定字符
F<char> 本行内向左跳到指定字符
; / , 重复/反向 f/F 命令

3w # 前进 3 个词
5j # 下移 5 行
2dw # 删除 2 个词
10x # 删除 10 个字符

三、文本编辑(Normal 模式)

# 插入文本
i # 在当前字符前插入
a # 在当前字符后插入
I # 在行首插入
A # 在行尾插入
o # 在下方插入新行
O # 在上方插入新行
s # 删除当前字符并进入插入模式
S # 删除整行并进入插入模式
c<motion> # 删除指定范围并进入插入模式
cw # 删除当前词并进入插入模式
cc # 删除整行并插入

删除文本

x # 删除当前字符 X # 删除光标前一个字符 d<motion> # 删除指定范围 dw # 删除当前词 dd # 删除当前行 d$ # 删除到行尾 dgg # 删除到文件开头 dG # 删除到文件结尾 3dd # 删除 3 行

复制/粘贴/撤销

y<motion> # 复制指定范围(yank) yy 或 Y # 复制当前行 yw # 复制当前词 p # 在光标后粘贴(paste after) P # 在光标前粘贴(paste before) u # 撤销(undo) Ctrl+r # 重做(redo) . # 重复上一次编辑操作

可视模式(Visual)

v # 字符级可视模式 V # 行级可视模式 Ctrl+v # 块级可视模式(矩形选区)

搜索与替换

/pattern # 向后搜索(search) ?pattern # 向前搜索 n # 跳到下一个匹配(N 反向) N # 跳到上一个匹配

:set hlsearch # 开启高亮
:nohlsearch # 清除高亮

:s/old/new/ # 替换当前行第一个匹配
:s/old/new/g # 替换当前行所有匹配
:%s/old/new/g # 替换文件中所有匹配
:%s/old/new/gc # 替换前逐个确认(confirm)

四、常见问题

Q1:不小心按了 Ctrl+s 冻结了终端怎么办?
Ctrl+q 解冻。这是终端的流控(XON/XOFF)功能,与 Vim 无关。

Q2:Vim 如何撤销/恢复误操作?
u 撤销,Ctrl+r 重做。U 撤销对当前行的所有修改。

Q3:如何在 Vim 中快速删除大量内容?
在 Normal 模式使用 d<motion>d<count>。例如 dG 删除到文件末尾,:5,20d 删除第 5~20 行。

五、延伸阅读