1. 显示行号
| 命令 | 说明 |
|---|
:set nu 或 :set number | 显示行号 |
:set nonu 或 :set nonumber | 隐藏行号 |
:set rnu 或 :set relativenumber | 显示相对行号(便于上下移动) |
2. 利用行号快速定位
| 命令 | 说明 |
|---|
:行号 | 跳转到指定行,例如 :25 跳到第 25 行 |
行号G | 普通模式下,输入行号后按 G,例如 25G 跳到第 25 行 |
gg | 跳到文件第一行 |
G | 跳到文件最后一行 |
:0 或 :1 | 跳到第一行 |
:$ | 跳到最后一行 |
3. 增(插入)
| 命令 | 说明 |
|---|
i | 在光标前插入 |
I | 在行首插入 |
a | 在光标后插入 |
A | 在行尾插入 |
o | 在下一行插入新行 |
O | 在上一行插入新行 |
:行号 o | 在指定行下方插入空行,例如 :10 o |
:行号 O | 在指定行上方插入空行,例如 :10 O |
4. 删
| 命令 | 说明 |
|---|
x | 删除光标处字符 |
dd | 删除当前行 |
行号 dd | 删除指定行,例如 25dd 删除第 25 行 |
:行号 d | 删除指定行,例如 :25 d |
:起始行,结束行 d | 删除多行,例如 :10,20 d 删除第 10 到 20 行 |
dG | 删除当前行到文件末尾 |
dgg | 删除当前行到文件开头 |
5. 改
| 命令 | 说明 |
|---|
r | 替换光标处单个字符 |
R | 进入替换模式(覆盖输入) |
cc | 删除当前行并进入插入模式 |
C | 删除光标到行尾并进入插入模式 |
:行号 s/旧/新/ | 替换指定行第一个匹配,例如 :25 s/foo/bar/ |
:行号 s/旧/新/g | 替换指定行所有匹配 |
:起始行,结束行 s/旧/新/g | 替换多行所有匹配,例如 :10,20 s/foo/bar/g |
:% s/旧/新/g | 替换全文所有匹配 |
:% s/旧/新/gc | 替换全文所有匹配(逐个确认) |
6. 查
| 命令 | 说明 |
|---|
/关键词 | 向下搜索关键词 |
?关键词 | 向上搜索关键词 |
n | 重复上一次搜索(同方向) |
N | 反向重复上一次搜索 |
:行号 | 跳转到指定行 |
:行号 p | 在指定行下方粘贴(查+复制组合) |
:行号 co 目标行号 | 复制指定行到目标行下方,例如 :10 co 20 |
7. 复制与粘贴(结合行号)
| 命令 | 说明 |
|---|
yy | 复制当前行 |
行号 yy | 复制指定行,例如 25yy 复制第 25 行(从光标所在行开始算,通常配合 G 使用) |
:起始行,结束行 y | 复制多行,例如 :10,20 y |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
:行号 pu | 在指定行下方粘贴,例如 :25 pu |
:行号 pu! | 在指定行上方粘贴 |
8. 撤销与重做
9. 保存与退出
| 命令 | 说明 |
|---|
:w | 保存 |
:q | 退出 |
:wq 或 :x 或 ZZ | 保存并退出 |
:q! | 强制退出不保存 |
10. 综合示例
:set nu " 显示行号
:25 " 跳到第 25 行
:25 d " 删除第 25 行
:10,20 d " 删除第 10 到 20 行
:15 o " 在第 15 行下方插入空行并进入插入模式
:30 s/error/SUCCESS/g " 将第 30 行所有 error 替换为 SUCCESS
:% s/old/new/g " 全文替换