在 Linux 系统管理中,你几乎每天都要编辑配置文件、脚本或日志。由于大多数服务器没有图形界面,掌握命令行文本编辑器是必备技能 。本章将带你从零开始掌握 vi/vim 和 nano 两大编辑器,让你能自如地修改任何配置文件。
🌟 本章目标
- 理解为什么 vi/vim 是 Linux 管理员的"生存技能"
- 掌握 vi/vim 的三种模式:命令模式、插入模式、末行模式
- 熟练使用基本编辑操作:移动、复制、粘贴、删除、查找、替换
- 学会使用
nano作为简单替代方案 - 实战编辑常见配置文件(如
/etc/hosts)
7.1 为什么必须学 vi/vim?
- ✅ 所有 Linux 系统都预装 vi(或兼容版本),即使最小化安装也能用
- ✅ 不依赖图形界面,适合远程 SSH 操作
- ✅ 功能强大,支持正则查找、多文件编辑、宏等
- ✅ 是 RHCE、信创认证等考试的必考内容
💬 "不会 vi,就不算真正会 Linux。"
📌 vi 是原始编辑器,vim (Vi IMproved)是增强版,openEuler 默认安装 vim,但 vi 命令仍可用。
7.2 vi/vim 的三种模式
vi/vim 的核心是模式切换。初学者常因"按了 i 却退不出"而困惑,关键在于理解三种模式:
┌─────────────┐ i,a,o ┌─────────────┐ ESC ┌─────────────┐
│ 命令模式 │ ────────────→ │ 插入模式 │ ──────────→ │ 命令模式 │
│ (Command) │ │ (Insert) │ │ (Command) │
└─────────────┘ └─────────────┘ └─────────────┘
↑ │
│ ↓
└─────────────────────────────────────────────── :wq, :q!
末行模式 (Last Line)
✅ 模式说明
| 模式 | 功能 | 进入方式 | 退出方式 |
|---|---|---|---|
| 命令模式 | 移动光标、复制、删除、保存等操作 | 启动时默认进入 | 按 ESC 返回 |
| 插入模式 | 输入文本内容 | 按 i, a, o 等 |
按 ESC 返回命令模式 |
| 末行模式 | 保存、退出、查找替换、跳转行号 | 按 : 进入 |
执行命令后自动返回 |
⚠️ 重要:只有在命令模式下才能进入末行模式或切换到插入模式
7.3 启动与退出 vi/vim
启动编辑器
bash
vi filename.txt
vim filename.txt
如果文件不存在,保存时会创建。
退出操作(必须在命令模式下)
| 命令 | 说明 |
|---|---|
:q |
退出(文件未修改) |
:q! |
强制退出,不保存 |
:w |
保存(不退出) |
:wq |
保存并退出 |
:x |
同 :wq |
:w filename |
另存为其他文件名 |
💡 记住:
:wq是最常用的退出命令
7.4 插入模式:输入文本
在命令模式下,按以下键进入插入模式:
| 按键 | 功能 |
|---|---|
i |
在光标前插入 |
a |
在光标后插入 |
I |
在行首插入 |
A |
在行尾插入 |
o |
在当前行下方新建一行并插入 |
O |
在当前行上方新建一行并插入 |
实战练习
- 运行
vi test.txt - 按
i进入插入模式 - 输入:
Hello, openEuler! - 按
ESC返回命令模式 - 按
:wq保存退出
✅ 文件已创建并保存!
7.5 命令模式:光标移动与编辑
📍 光标移动(基础)
| 按键 | 功能 |
|---|---|
h |
左移 |
j |
下移 |
k |
上移 |
l |
右移 |
0 |
移到行首 |
^ |
移到第一个非空字符 |
$ |
移到行尾 |
gg |
跳到文件第一行 |
G |
跳到文件最后一行 |
5G |
跳到第 5 行 |
:10 |
跳到第 10 行(末行模式) |
✂️ 删除操作
| 命令 | 功能 |
|---|---|
x |
删除光标处字符 |
X |
删除光标前字符 |
dd |
删除整行 |
5dd |
删除从当前行开始的 5 行 |
d$ |
删除从光标到行尾 |
d0 |
删除从光标到行首 |
📋 复制与粘贴
| 命令 | 功能 |
|---|---|
yy |
复制当前行 |
5yy |
复制 5 行 |
p |
粘贴到光标下方 |
P |
粘贴到光标上方 |
🔍 查找与替换
查找文本
- 在命令模式下按
/进入搜索 - 输入关键词,如
/error - 按
Enter,光标跳转到第一个匹配 - 按
n跳转下一个,N上一个
替换文本(末行模式)
vim
:s/old/new/ # 替换当前行第一个 old
:s/old/new/g # 替换当前行所有 old
:1,$s/old/new/g # 替换全文所有 old
:%s/old/new/g # 同上(% 表示全文)
:%s/old/new/gc # 替换前确认(c = confirm)
7.6 末行模式:高级操作
进入方式:在命令模式下按 :
| 命令 | 功能 |
|---|---|
:set number |
显示行号 |
:set nonumber |
关闭行号 |
:set hlsearch |
高亮搜索结果 |
:nohlsearch |
取消高亮 |
:r /etc/passwd |
读取文件内容插入到当前光标位置 |
:w backup.txt |
另存为 backup.txt |
💡 实用技巧:
在
.vimrc中设置默认行号:
bashecho "set number" >> ~/.vimrc
7.7 使用 nano 作为替代方案
nano 是一个更简单的文本编辑器,适合初学者。
启动 nano
bash
nano filename.txt
nano 快捷键(底部有提示)
| 快捷键 | 功能 |
|---|---|
Ctrl+O |
保存(Write Out) |
Ctrl+X |
退出(Exit) |
Ctrl+K |
剪切一行 |
Ctrl+U |
粘贴 |
Ctrl+W |
查找(Where Is) |
Ctrl+\ |
查找并替换 |
Ctrl+C |
显示当前行号 |
✅ 优点:直观、易用
❌ 缺点:功能较弱,非所有系统预装
7.8 实战:编辑系统配置文件
案例:修改 /etc/hosts 文件
/etc/hosts 用于本地域名解析,常用于开发测试。
bash
sudo vi /etc/hosts
在文件末尾添加:
192.168.1.100 myapp.local
127.0.0.1 dashboard.test
保存退出后测试:
bash
ping myapp.local
✅ 成功解析说明配置生效!
✅ 本章小结
| 编辑器 | 适用场景 | 学习难度 | 推荐指数 |
|---|---|---|---|
| vi/vim | 所有场景,尤其服务器管理 | ⭐⭐⭐⭐☆ | ⭐⭐⭐⭐⭐ |
| nano | 快速编辑、初学者 | ⭐⭐ | ⭐⭐⭐⭐ |
必记命令(vi/vim)
| 操作 | 命令 |
|---|---|
| 保存并退出 | :wq |
| 不保存退出 | :q! |
| 查找 | /关键词 |
| 全局替换 | :%s/old/new/g |
| 显示行号 | :set number |
| 删除一行 | dd |
| 复制一行 | yy |
| 粘贴 | p |
📝 课后练习
-
创建一个文件
memo.txt,用vi输入三行内容,保存退出。 -
重新打开该文件,使用
/查找某个单词。 -
将第二行复制并粘贴到文件末尾。
-
使用
:%s/old/new/g将所有 "test" 替换为 "demo"。 -
用
nano编辑/tmp/config.tmp,添加几行配置后保存。 -
(挑战)尝试在
.vimrc中设置自动缩进和语法高亮:bashecho "set autoindent" >> ~/.vimrc echo "syntax on" >> ~/.vimrc
🔜 下一章预告:第8章《用户与用户组管理》
我们将学习:
- Linux 多用户机制原理
- 使用
useradd,userdel,passwd管理用户 - 使用
groupadd,gpasswd管理用户组 - 理解
/etc/passwd,/etc/shadow,/etc/group文件结构 - 配置
sudo权限,实现安全提权
准备好成为系统的"人事管理员"了吗?