理解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