在Linux系统中,vi(或其增强版vim)是一款功能强大的文本编辑器,广泛应用于服务器管理和日常开发中,掌握vi命令的文件修改操作是Linux用户的必备技能,本文将详细介绍vi命令的使用方法,包括启动模式、基本操作、高级技巧及注意事项,帮助用户高效完成文件编辑任务。

vi的启动与模式切换
vi编辑器有三种主要工作模式:命令模式(Command Mode)、插入模式(Insert Mode)和末行模式(Last Line Mode),启动vi时默认进入命令模式,需通过特定命令切换模式才能进行编辑操作。
-
启动vi
在终端输入vi 文件名
即可打开文件,若文件不存在,vi会自动创建新文件。vi test.txt
-
模式切换
- 命令模式 → 插入模式:按
i
(在光标前插入)、a
(在光标后插入)、o
(在新行插入)等键进入插入模式。 - 插入模式 → 命令模式:按
Esc
键返回命令模式。 - 命令模式 → 末行模式:按(冒号)进入末行模式,用于保存、退出或执行高级命令。
- 命令模式 → 插入模式:按
基本编辑操作
在命令模式下,可通过快捷键实现光标移动、文本删除、复制粘贴等操作。

光标移动
操作 | 功能说明 |
---|---|
h |
光标左移一格 |
j |
光标下移一行 |
k |
光标上移一行 |
l |
光标右移一格 |
0 或^ |
移至行首 |
移至行尾 | |
gg |
跳至文件首行 |
G |
跳至文件末行 |
nG |
跳至第n行(如10G ) |
文本删除与修改
操作 | 功能说明 |
---|---|
x |
删除光标所在字符 |
dd |
删除当前行 |
ndd |
删除n行(如3dd ) |
dw |
删除一个单词 |
d$ |
删除至行尾 |
r |
替换光标所在字符 |
cc |
修改整行 |
s |
替换当前字符并进入插入模式 |
复制与粘贴
操作 | 功能说明 |
---|---|
yy |
复制当前行 |
nyy |
复制n行(如5yy ) |
p |
在光标后粘贴 |
P |
在光标前粘贴 |
yw |
复制一个单词 |
撤销与重做
操作 | 功能说明 |
---|---|
u |
撤销上一步操作 |
Ctrl + r |
重做被撤销的操作 |
高级编辑技巧
查找与替换
在末行模式下,可通过以下命令实现文本搜索与替换:
- 查找:(向下搜索)、(向上搜索),按
n
跳至下一个匹配项,N
反向跳转。 - 替换:
:s/旧文本/新文本/g # 替换当前行所有匹配项 :%s/旧文本/新文本/g # 替换全文所有匹配项 :n1,n2s/旧文本/新文本/g # 替换第n1至n2行的匹配项
多文件编辑
- 打开多个文件:
vi 文件1 文件2
,通过next
(下一个文件)、prev
(上一个文件)切换。 - 分屏编辑:
split
(水平分屏)、vsplit
(垂直分屏)Ctrl + w + 方向键
切换分屏
可视模式
按v
进入字符可视模式,按V
(大写)进入行可视模式,按Ctrl + v
进入块可视模式,可通过移动选择文本后执行删除(d
)、复制(y
)等操作。
保存与退出
在末行模式下,可通过以下命令管理文件:
| 操作 | 功能说明 |
|------------|------------------------|
| w
| 保存当前文件 |
| q
| 退出vi |
| wq
| 保存并退出 |
| q!
| 强制退出(不保存修改) |
| w 新文件名
| 另存为其他文件 |
实用技巧与注意事项
- 自动缩进:在末行模式下输入
set ai
可开启自动缩进,适合编辑代码。 - 显示行号:
set nu
显示行号,set nonu
隐藏行号。 - 语法高亮:
syntax on
开启语法高亮(需vim支持)。 - 避免误操作:在命令模式下频繁按
Esc
确保处于正确模式,防止误触发命令。 - 备份文件:编辑前可通过
w! 备份名
创建备份,或设置autowrite
自动保存。
相关问答FAQs
问题1:如何在不退出vi的情况下执行Linux命令?
解答:在末行模式下输入!命令
即可执行Linux命令,例如!ls
查看当前目录文件,执行后按回车返回vi,若需长期保留命令输出,可结合r !命令
将结果插入文件中。

问题2:vi中如何快速跳转到匹配的括号(如{}、[])?
解答:将光标置于任意括号上,按键即可跳转到匹配的括号,此功能需确保文件中括号成对出现,且matchpairs
选项已设置(默认包含{:}, [:], (:}
)。