VIM 三模式
RHEL 9 上用 VIM 改配置:命令/插入/末行三模式、常用键位、保存退出,以及 swap 文件报错的处理。
本页目录
考试里几乎所有「改配置文件」都假设你会 VIM:改 sshd_config、写 repo 文件、调 Ansible playbook。你不必成为 Vim 诗人,但必须做到:打开、移动、改几行、保存退出、搞砸了能恢复。本篇只覆盖这条最小闭环。
系列:从 RHCSA 到 RHCE · 第 4 / 17 篇 上一篇:nmcli 配静态 IP 与 SSH 下一篇:dnf 软件源与 tar 总目录:系列索引
环境说明
- 系统:RHEL 9(默认自带
vim或vim-minimal) - 身份:改系统配置需 root;家目录实验任意用户
- 前置:会
cd/ls(见基础命令篇)
若命令不存在:
which vim vi
dnf -y install vim-enhanced
很多教程里的 vi 在 RHEL 上往往是 vim 的别名或兼容入口;本文统一说 vim。
打开与新建
vim /root/hello.txt
- 文件不存在:打开空缓冲区,保存时才真正创建文件
- 文件已存在:载入内容
- 只读查看也可以用
vim;更长的日志仍推荐less
vim /etc/hosts # 系统文件,需 root
vim notes.txt # 当前目录
考点:
vim 路径——路径写错不会报「文件不存在」,而是空白新文件;保存时才发现写到了错误位置。保存前先看标题栏/pwd。
三模式(必懂)
i / a / o 等
命令模式 ─────────► 插入模式
▲ │
│ Esc │
└─────────────────────┘
│
│ :
▼
末行模式(输入完回车后回到命令模式)
| 模式 | 能干什么 | 如何进入 | 如何离开 |
|---|---|---|---|
| 命令模式(默认) | 移动、复制、删除行、撤销 | 打开即是;插入/末行按 Esc 回来 | 按 i 等进插入;按 : 进末行 |
| 插入模式 | 打字改内容 | i a o I A O 等 | Esc |
| 末行模式 | 保存、退出、设置、搜索替换 | 命令模式下按 : | 回车执行,或 Esc 取消 |
屏幕底部出现 -- INSERT -- 才是插入模式。按错模式是新手第一坑:不确定就先狂按 Esc。
常用进入插入的方式
| 键 | 作用 |
|---|---|
| i | 在光标前插入 |
| a | 在光标后插入 |
| o | 在下一行新开一行插入 |
| O | 在上一行新开一行插入 |
| I | 行首插入 |
| A | 行尾插入 |
考试改配置最常用:方向键移到目标行 → A 行尾补内容,或 i 改中间几个字。整行重写可用 cc(清空当前行并进入插入)。
命令模式:移动与编辑
移动
| 键 | 作用 |
|---|---|
| 方向键 / h j k l | 左下上右 |
| gg | 文件第一行 |
| G | 文件最后一行 |
| nG 或 :n | 跳到第 n 行(末行) |
| 0 / $ | 行首 / 行尾 |
| w / b | 下一词 / 上一词 |
改 40 行附近的配置时::40 或 40G 比狂按方向键快。
行编辑(高频)
| 键 | 作用 |
|---|---|
| yy | 复制当前行 |
| 3yy | 从当前行起复制 3 行 |
| p | 粘贴到下一行 |
| P | 粘贴到上一行 |
| dd | 剪切(删除)当前行 |
| 3dd | 删除 3 行 |
| x | 删除光标处一个字符 |
| u | 撤销 |
| Ctrl + r | 重做(反撤销) |
练习节奏:改错了先 u,不要慌着 :q! 整段丢掉。
末行模式:保存与退出
在命令模式按 :,输入后回车:
| 命令 | 作用 |
|---|---|
| :w | 保存,不退出 |
| :wq 或 :x | 保存并退出 |
| :q | 退出(无修改时) |
| :q! | 不保存强制退出 |
| :w /tmp/backup.conf | 另存为 |
| :set nu | 显示行号 |
| :set nonu | 隐藏行号 |
| :wq! | 强制保存(对只读但你是 root 时常用) |
记忆口诀
- 要保存:
:w - 要走人:
:q - 改完走:
:wq - 改废了想重来:
:q!
易错:在插入模式直接敲
:wq,只会把字符打进文件。必须先Esc。
完整最小实验
cd
vim hello.txt
- 打开后是命令模式
- 按
i,左下角出现 INSERT - 输入:
hello the world
What about you?
Not bad!
- 按
Esc - 输入
:wq回车
验证:
ls -l hello.txt
cat hello.txt
再打开练键位:
vim hello.txt
G到末行,gg回顶部yy再p复制一行dd删一行,u撤销:set nu看行号- 改乱后
:q!不保存退出,再cat确认内容未变
搜索(改配置很有用)
命令模式:
| 键 | 作用 |
|---|---|
| /关键词 | 向下搜索,回车执行 |
| ?关键词 | 向上搜索 |
| n / N | 下一个 / 上一个 |
例:在 sshd_config 里找 PermitRootLogin:
vim /etc/ssh/sshd_config
输入 /PermitRoot 回车,用 n 跳下一个匹配。找到后 i 或 A 修改,Esc,:wq。
配置文件实战套路
以「改一行、注释一行」为例:
vim打开文件/关键词定位:set nu记住行号(方便对答案)- 移动到目标行:
- 改内容:
i/A - 整行替换:
dd删掉再O插入,或cc清空行并进入插入
- 改内容:
Esc→:wq- 另开终端
less 文件或grep 关键词 文件验证
grep -n PermitRootLogin /etc/ssh/sshd_config
Swap 文件与 E325 事故
若 VIM 非法退出(进程被杀、部分环境里 Ctrl+Z 挂起后未处理、断电),会留下交换文件:
E325: ATTENTION
Found a swap file by the name "/root/.hello.txt.swp"
含义:还有另一个 VIM 在编辑,或上次异常退出。
菜单常见选项:
| 选项 | 作用 |
|---|---|
| (O)pen Read-Only | 只读打开 |
| (E)dit anyway | 仍编辑(可能丢未保存内容) |
| (R)ecover | 尝试从 swap 恢复 |
| (Q)uit / (A)bort | 退出,不解决文件本身 |
处理步骤(实验环境最常用)
- 确认没有其它 vim 进程:
ps aux | grep vim - 看清提示里的 swp 路径(注意隐藏文件)
- 删掉 swap 文件后重新打开:
ls -a
ls -a /root
rm -f /root/.hello.txt.swp
vim /root/hello.txt
易错:swap 是隐藏文件,
ls不显示,要用ls -a。 易错:路径写错,删了别的.swp。 说明:考试若出现 E325,按提示删除对应 swp 即可;不要在未 recover 时盲目:q!然后以为内容丢了——先试(R)ecover。
关于 Ctrl+Z
在终端里 Ctrl+Z 是把前台进程挂起(丢到后台 stopped),不是「取消」。VIM 被挂起后文件可能处于半编辑状态,容易诱发 swap 警告。
- 误按:输入
fg把 VIM 拉回前台,正常:wq - 真要中断:在 VIM 里用
:q!,或终端Ctrl+C(对 VIM 效果有限,优先:q!)
常用键位速查
| 目标 | 键 / 命令 |
|---|---|
| 插入 | i a o |
| 回命令模式 | Esc |
| 保存 | :w |
| 保存退出 | :wq :x |
| 不保存退出 | :q! |
| 行号 | :set nu |
| 复制行 | yy p |
| 删行 | dd |
| 撤销 / 重做 | u / Ctrl+r |
| 顶 / 底 | gg / G |
| 搜索 | /词 n |
考点与易错
考点:打开配置 → 修改 →
:wq→systemctl restart 服务,是整条实操链。 易错:插入模式敲命令;先Esc。 易错::q提示已修改却退出,改用:wq或明确:q!。 易错:E325 后不会删.swp,导致一直打不开目标文件。 易错:用Ctrl+Z代替退出,制造 swap。 练习环境:课堂用 root 改/etc下文件时,保存可用:wq;个别只读缓冲用:wq!。
小结
- 三模式:命令(默认)→
i插入 →Esc→:wq保存退出。 - 复制粘贴删除记
yy/p/dd,撤销u。 - 配置文件用
/关键词定位,:set nu辅助。 - 遇 E325:确认无其它 vim 后删除提示的
.swp,再打开。
下一篇进入软件与压缩:写 /etc/yum.repos.d/*.repo,用 dnf 装包,用 tar 打包日志——编辑器会立刻用上。
系列导航:总目录 · 上一篇:nmcli 配静态 IP 与 SSH · 下一篇:dnf 软件源与 tar