什么是末行模式?
末行模式是 vi 编辑器三种模式之一(另外两种是普通模式和插入模式),它通过在普通模式下输入冒号 来进入,它的主要特点是光标会跳转到屏幕的最底部一行,并显示一个冒号 ,等待你输入命令。

你可以把末行模式想象成 vi 的“命令行控制中心”,在这里你可以执行保存、退出、搜索、替换、配置设置等高级操作。
如何进入和退出末行模式?
-
进入末行模式:
- 确保你当前处于普通模式(按
Esc键可以确保进入普通模式)。 - 按下冒号 键。
- 光标就会跳到屏幕底部,出现 提示符。
- 确保你当前处于普通模式(按
-
退出末行模式:
- 按下
Enter键:执行你输入的命令,然后返回普通模式。 - 按下
Esc键:取消当前输入,直接返回普通模式,这是最常用的退出方式,尤其是在输错命令时。
- 按下
末行模式的核心命令分类
末行模式的命令非常丰富,下面我们将其分为几大类进行详细介绍。

文件操作(保存与退出)
这是末行模式最基本也是最常用的功能。
| 命令 | 全称 | 功能说明 |
|---|---|---|
w |
write | 保存对文件的修改,但不退出。 |
q |
quit | 退出 vi 编辑器,如果文件有未保存的修改,会报错。 |
wq |
write and quit | 保存修改并退出,这是最标准的保存退出方式。 |
x |
保存修改并退出,与 wq 类似,但如果文件没有修改,它不会更新文件时间戳,更高效。 |
|
q! |
quit without saving | 强制退出,不保存任何修改,当你改乱了文件想放弃所有更改时非常有用。 |
wq! |
write and quit force | 强制保存并退出,当你对文件没有写入权限但又想保存时使用(需要文件所有者权限)。 |
w newfile.txt |
write to new file | 将当前文件的内容另存为 newfile.txt,原文件保持不变。 |
r filename |
read | 将 filename 文件的内容读取并插入到当前光标所在位置的下方。 |
组合使用示例:
- 修改完代码后,输入
wq然后回车,保存并退出。 - 不小心改错了很多东西,想全部放弃,输入
q!然后回车,直接退出。 - 想把当前文件备份一份,输入
w my_backup.txt然后回车。
搜索与替换
vi 的搜索和替换功能非常高效,使用正则表达式。
| 命令 | 功能说明 |
|---|---|
/pattern |
从光标位置向下搜索 pattern(字符串或正则表达式),按 n 跳到下一个匹配项,N 跳到上一个。 |
?pattern |
从光标位置向上搜索 pattern,同样按 n 和 N 在匹配结果间跳转。 |
s/old/new |
在当前行中,将第一个 old 替换为 new。 |
s/old/new/g |
在当前行中,将所有的 old 全部替换为 new (g 代表 global)。 |
%s/old/new/g |
在整个文件中,将所有的 old 全部替换为 new,这是最常用的全局替换命令。 |
%s/old/new/gc |
在整个文件中,将所有的 old 全部替换为 new,但每次替换前都会询问你是否确认 (c 代表 confirm)。 |
搜索与替换示例:

- 搜索 "error":输入
/error回车。 - 将当前文件所有的 "color" 替换为 "colour":输入
%s/color/colour/g回车。 - 将文件中所有的 "foo" 替换为 "bar",但每次都先问你:输入
%s/foo/bar/gc回车,然后你会看到replace with bar (y/n/a/q/l/^E/^Y)?的提示,按y确认,n跳过,a全部替换,q退出替换。
窗口与标签页操作(vim 特有)
如果你使用的是 vim,末行模式还提供了强大的窗口和标签页管理功能。
| 命令 | 功能说明 |
|---|---|
e filename |
打开一个新文件 filename 到当前窗口。 |
sp filename |
水平分割窗口,并在新窗口中打开 filename。 |
vs filename |
垂直分割窗口,并在新窗口中打开 filename。 |
tabe filename |
在一个新标签页中打开 filename。 |
wq |
在分割窗口中,关闭当前窗口并保存。 |
q |
在分割窗口中,关闭当前窗口(如果所有窗口都关闭了,vim 也会退出)。 |
bn / bp |
切换到下一个 / 上一个缓冲区。 |
窗口操作示例:
- 想同时查看两个文件:打开
file1.txt后,输入sp file2.txt回车,屏幕就会上下分成两个窗口。 - 在一个窗口中修改代码,另一个窗口查看参考文档,非常方便。
其他实用命令
| 命令 | 功能说明 |
|---|---|
set nu |
显示行号。 |
set nonu |
取消显示行号。 |
set ic |
搜索时忽略大小写。 |
set noic |
搜索时区分大小写(默认)。 |
syntax on |
开启语法高亮。 |
noh |
高亮取消,执行搜索后,匹配项会被高亮显示,输入 noh 回车可以取消这些高亮。 |
help |
打开 vim 的内置帮助文档。help w 会查看 w 命令的帮助。 |
总结与技巧
- Esc 是你的朋友:如果在末行模式输错了命令,或者想取消,直接按
Esc键,它会让你安全地回到普通模式。 - 命令补全:在输入命令时,可以按
Tab键进行补全,比如输入se然后按Tab,会自动补全为set。 - 命令历史:在末行模式下,可以使用上下方向键 和 来浏览你之前输入过的命令。
- 从普通模式开始:所有强大的末行模式命令,都必须从普通模式(按
Esc进入)通过 来启动。
掌握末行模式,意味着你真正开始解锁 vi/vim 编辑器的强大潜力,它能让你的文本编辑效率得到质的飞跃。
