Vim 编辑器完全指南:模式、移动、编辑与搜索替换
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 行。
五、延伸阅读
- Vim 官方文档:
:help(Vim 内置帮助) - Vim Galore:https://github.com/mhinz/vim-galore
- Interactive Vim Tutorial:https://www.openvim.com/