理解vi的三种模式
- 命令模式(默认模式)
启动vi
后自动进入,可执行复制、删除、搜索等操作(不可直接输入文本)。 - 插入模式
按i
、a
、o
等键进入,可自由编辑文本。 - 末行模式
在命令模式下按 进入,用于保存、退出或执行高级命令。
⚠️ 退出操作需在命令模式下触发(若在插入模式,先按
Esc
返回命令模式)。
退出vi的6种核心命令
保存并退出(常用)
- 命令:
:wq
作用: 保存文件并退出编辑器。
场景: 完成编辑后正常退出。
替代键::x
或ZZ
(大写,命令模式下直接按,无需 )。
不保存强制退出
- 命令:
:q!
作用: 放弃所有修改,强制退出。
场景: 编辑出错或误修改文件时紧急退出。
仅退出(无修改时)
- 命令:
:q
作用: 退出编辑器(仅当未修改文件时有效)。
场景: 查看文件后直接退出。
报错处理: 若文件已修改,vi会提示E37: No write since last change
,此时需结合:q!
或:wq
。
保存但不退出
- 命令:
:w
作用: 保存文件但继续编辑。
场景: 编辑长文件时临时保存进度。
强制保存只读文件
- 命令:
:w !sudo tee %
作用: 用sudo
权限保存只读文件(需输入密码)。
场景: 编辑系统配置文件(如/etc/nginx/nginx.conf
)时权限不足。
崩溃恢复后退出
- 命令:
:q!
作用: 忽略交换文件(.swp
)警告强制退出。
场景: 编辑器异常关闭后重新打开时提示Swap file exists
。
操作流程图
启动vi → 命令模式(按 Esc 确保进入) ├─ 输入 :wq → 保存并退出 ├─ 输入 :q! → 不保存强制退出 ├─ 输入 :q → 尝试退出(无修改时成功) └─ 输入 :w → 仅保存不退出
常见问题解决
- 卡在插入模式无法退出?
狂按Esc
返回命令模式(vi会响铃提示已切换)。 - 输入
:wq
后报错E212: Can't open file
?
文件权限不足 → 用:w !sudo tee %
或:wq!
强制保存(需sudo权限)。 - 退出后终端乱码?
因异常退出导致 → 执行reset
命令重置终端。
最佳实践建议
- 养成习惯:编辑前用
vi -R filename
以只读模式打开,防误操作。 - 确认模式:执行退出命令前,按
Esc
确保回到命令模式(底部无-- INSERT --
提示)。 - 备份文件:重要文件编辑前用
cp file file.bak
备份。
💡 提示:
vimtutor
命令可启动官方教程(30分钟掌握基础)。
退出vi的关键是 Esc
(确保命令模式)→ (进入末行模式)→ 选择退出命令,掌握 :wq
(保存退出)、:q!
(强制退出)和 :w
(仅保存)即可应对绝大多数场景,熟练后,可结合 ZZ
、ZQ
等快捷键提升效率。
本文参考:
- Vim官方文档(
:help quitting
)- 《鸟哥的Linux私房菜》基础篇
- Linux man-pages (
man vi
)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5409.html