一、vi 编辑器的工作模式
1. 工作模式概述
vi 编辑器是工作在字符终端环境下的全屏幕编辑器,通过按键命令实现编辑和操作功能。vi 编辑器有三种工作模式:
- 命令模式:默认进入的模式,主要完成光标移动、字符串查找、删除、复制、粘贴等操作。
- 输入模式:用于录入文件内容,修改或添加文本。进入输入模式后,最后一行会显示“-- INSERT --”提示。
- 末行模式:用于设置编辑环境、保存文件、退出编辑器、查找替换等操作。进入末行模式后,最后一行会显示冒号“:”提示符。
2. 模式切换方法
- 命令模式 → 输入模式:按
a
、i
、o
等键。 - 输入模式 → 命令模式:按
Esc
键。 - 命令模式 → 末行模式:按
:
键。 - 末行模式 → 命令模式:按
Esc
键。
二、命令模式中的基本操作
1. 模式切换
在命令模式中,按以下键进入输入模式:
命令 | 模式切换键 |
---|
a | 在当前光标后插入内容。 |
A | 在行尾插入内容。 |
i | 在当前光标前插入内容。 |
I | 在行首插入内容。 |
o | 在当前行后插入新行。 |
O | 在当前行前插入新行。 |
2. 光标移动
2.1 方向移动
2.2 翻页移动
Page Down
或 Ctrl + F
:向下翻动一整页内容Page Up
或 Ctrl + B
:向上翻动一整页内容
2.3 行内跳转
Home
、^
或 0
:跳转到行首。End
或 $
:跳转到行尾。
注:在上述按键操作中,Page Down、Page Up、Home、End 键及方向键同样也可在 vi的输入模式中使用。
2.4 行间跳转
案件命令 | 作用 |
---|
1G 或 gg | 跳转到文件第 1 行 |
G | 跳转到文件最后一行 |
#G | 跳转到文件中“#”(具体用数字替换) |
2.5 显示、取消行号
命令 | 作用 |
---|
set nu | 显示行号 |
set nonu | 取消显示行号 |


2.6 补充
命令 | 含义 |
---|
w | 跳到下一个单词。 |
b | 跳到上一个单词。 |
H | 跳转到当前屏幕第一行。 |
M | 跳转到当前屏幕中间。 |
L | 跳转到当前屏幕最后一行。 |
3. 复制、粘贴和删除
3.1 删除操作
命令 | 含义 |
---|
u | 撤销操作 |
x 键或 Delete 键 | 删除光标处的单个字符。 |
dd | 删除当前光标所在行 |
#dd | 删除从光标处开始的#行内容 |
d^ | 删除当前光标之前到行首的所有字符。 |
d$ | 删除当前光标处到行尾的所有字符。 |
u | 撤销操作 |
3.2 复制操作
命令 | 含义 |
---|
yy | 复制当前行 |
#yy | 复制从光标处开始的 # 行 |
3.3 粘贴操作

3.4 其他操作
4. 查找文件内容
命令 | 含义 |
---|
/ | 向后查找字符 |
? | 向前查找字符串 |
n | 跳转到下一个匹配结果 |
N | 跳转到上一个匹配结果 |
5. 撤销编辑及保存退出
在对文件内容进行编辑时,有时候需要对一些失误的编辑操作进行撤销,这时可以使用以下按键。用于取消最近一次的操作,并恢复操作结果。
按键 | 含义 |
---|
u | 撤销最近一次操作 |
U | 撤销对当前行的所有编辑 |
ZZ | 保存并退出 |
三、末行模式中的基本操作
1. 保存文件及退出
命令 | 含义 |
---|
:w | 文件内容进行修改并确认以后,进行保存。 |
:w /root/newfile | 将当前内容另存为指定路径的新文件 |
:q | 未修改时退出vi编辑器 |
:ql | 强制退出vi编辑器(不保存) |
:wq或x | 保存并退出 |


2. 打开新文件或读入内容
:e 新文件
:打开新文件编辑。
在当前 vi 编辑器中,执行“:e 新的文件”形式的末行命令可以编辑(Edit)新文件。
例如,执行如下的“:e~/initial-setup-ks.cfg”

操作将直接打开当前用户宿主目录中的 initial-setup-ks.cfg 文件进行编辑。
3. 替换文件内容
替换命令格式:
: [替换范围] sub /旧的内容/新的内容[/g]
命令 | 功能 |
---|
:s ./old/new | 将当前行中扎找到的第一个字符“old” 为 “new” |
:s ./old/new/g | 将当前行中扎找到的所有字符串“old” 为 “new” |
:#,# s/old/new/g | 在行号#,#范围内所有字符串“old” 为 “new” |
:% s/old/new/g | 在整个文件范围内所有字符串“old” 为 “new” |
:s /old/new/c | 替换末尾行加入“c”命令,对每个替换动作提醒 |
3.1验证
3.1.1
s ./old/new 的使用
前

后

3.1.2
“:% s/old/new/g”的使用
前

后

4. 总结
你就学吧,vi编辑器不难,后面一学一个不吱声