在任何基于 Linux 的服务器环境中,尤其是像 CentOS 7 这样广泛用于企业级应用的系统,掌握命令行文本编辑器是每一位系统管理员和开发者的必备技能,在众多编辑器中,vi(或其增强版 vim)以其无处不在、功能强大和资源占用极低的特点,成为了事实上的标准,它没有图形界面,所有操作都通过键盘命令完成,一旦熟练掌握,其编辑效率远超许多图形化工具,本文将系统性地介绍在 CentOS 7 环境下 vi 命令的核心概念与常用操作。

理解 vi 的核心模式
初学者接触 vi 时最大的困惑点在于其独特的工作模式。vi 主要有三种核心模式,理解它们是熟练使用 vi 的基石。
-
命令模式 这是
vi启动后的默认模式,在此模式下,你输入的任何字符都被视为一个命令,而不是文本内容,按下j键会将光标向下移动一行,而不是输入字母 "j",此模式主要用于光标移动、文本删除、复制、粘贴等操作。 -
插入模式 当需要输入或编辑文本内容时,必须进入插入模式,在命令模式下按下特定的键(如
i,a,o等)即可切换到此模式,进入后,屏幕底部通常会出现-- INSERT --或-- 插入 --的提示,在此模式下,你的键盘输入会直接显示在文件中,就像使用普通的记事本一样,完成输入后,需要按Esc键返回命令模式。 -
末行模式 也称为命令行模式,在命令模式下按下冒号 键即可进入末行模式,此时光标会跳到屏幕最底部,你可以输入一些更复杂的指令,如保存文件、退出编辑器、搜索替换字符串等,执行完命令后,按
Enter键即可返回命令模式。
基础操作指南
掌握了三种模式后,我们就可以开始进行实际的文件操作了。
启动与退出
在终端中输入 vi 加上文件名即可打开或创建文件。vi /etc/sysconfig/network-scripts/ifcfg-eth0 会编辑网络配置文件。
退出 vi 是初学者的另一个常见难题,以下表格小编总结了最常用的退出命令(需在末行模式下输入):
| 命令 | 功能说明 |
|---|---|
w |
保存(write)当前文件的修改,但不退出。 |
q |
退出(quit)编辑器,如果文件有修改则会提示。 |
wq |
保存修改并退出。 |
q! |
强制退出,不保存任何修改。 |
w filename |
另存为名为 filename 的新文件。 |
光标移动
在命令模式下,高效地移动光标是快速编辑的关键。

| 按键 | 功能说明 |
|---|---|
h, j, k, l |
分别代表左、下、上、右移动光标。 |
w |
移动到下一个单词的开头。 |
b |
移动到上一个单词的开头。 |
0 (数字零) |
移动到当前行的行首。 |
| 移动到当前行的行尾。 | |
gg |
移动到文件的第一行。 |
G |
移动到文件的最后一行。 |
文本编辑
-
进入插入模式
i:在光标前插入。a:在光标后追加。o:在当前行下方新建一行并进入插入模式。I:在当前行首插入。A:在当前行尾追加。O:在当前行上方新建一行并进入插入模式。
-
删除操作
x:删除光标所在处的单个字符。dw:删除从光标处到当前单词结尾的内容。dd:删除光标所在的整行。D:删除从光标处到行尾的所有内容。
-
复制与粘贴
yy:复制光标所在的整行。p:在光标所在行的下方粘贴复制或删除的内容。P:在光标所在行的上方粘贴。
-
撤销与重做
u:撤销上一步操作。Ctrl + r:重做(撤销的撤销)。
搜索与替换
vi 的搜索和替换功能非常强大,尤其在处理配置文件或日志时极为有用。
-
搜索 在命令模式下,输入 加上要搜索的字符串,然后按
Enter,光标会跳转到第一个匹配项。/error会向下搜索 "error"。- 按
n键可以跳转到下一个匹配项。 - 按
N键可以跳转到上一个匹配项。 - 使用 代替 可以进行向上搜索。
- 按
-
替换 替换操作在末行模式下进行。
s/old/new/g:将当前行中所有的 "old" 替换为 "new"。%s/old/new/g:将整个文件中所有的 "old" 替换为 "new",这是最常用的全局替换命令。%s/old/new/gc:在全局替换时,对每一个匹配项进行确认提示(c代表 confirm),输入y确认替换,n跳过。
vi 的进阶技巧与配置
-
多文件编辑 可以同时打开多个文件:
vi file1 file2,在末行模式下使用n切换到下一个文件,prev切换到上一个文件。
-
分屏显示 在末行模式下输入
split(或sp)可以水平分割窗口,输入vsplit(或vsp)可以垂直分割窗口,使用Ctrl + w再加上方向键(h,j,k,l)可以在不同窗口间切换光标。 -
个性化配置
vi的行为可以通过配置文件~/.vimrc(注意是vimrc,因为 CentOS 7 中的vi通常是vim的别名)进行自定义,如果文件不存在,可以自行创建,在此文件中添加一些常用配置,可以让vi更好用。set number " 显示行号 set autoindent " 自动缩进 syntax on " 开启语法高亮 set hlsearch " 高亮显示搜索结果
每次启动
vi时,它都会自动读取这个配置文件,使你的设置永久生效。
相关问答 FAQs
问题 1:在 vi 中,我无法输入文字,按键盘没反应,光标到处乱跳,怎么办?
解答: 这是 vi 初学者最常遇到的问题,原因是你当前正处于 命令模式,在此模式下,键盘输入被解释为移动、删除等命令,而不是文本,要开始输入文字,你需要先按下 i(在光标前插入)或 a(在光标后追加)键,进入 插入模式,此时屏幕底部会出现 -- INSERT -- 提示,你就可以正常输入了,编辑完成后,记得按 Esc 键返回命令模式,以便进行保存、退出等其他操作。
问题 2:如何让 vi 显示行号,并且在每次启动时自动生效?
解答: 要临时显示行号,可以在 末行模式(按 进入)下输入 set number 或其简写 set nu,然后按 Enter,这个设置仅在当前这次编辑会话中有效,如果你希望每次打开 vi 都自动显示行号,需要进行永久配置,方法是在你的用户主目录下创建或编辑一个名为 .vimrc 的隐藏文件(路径为 ~/.vimrc),在文件中加入一行 set number,然后保存退出,之后,无论何时启动 vi,行号都会自动加载,极大地方便了代码和配置文件的阅读与定位。