第一次在服务器上用 vi 打开配置文件,改了半天想走人,结果怎么都退不出去,Ctrl+C 没反应,最后干脆把整个终端窗口关掉。这个场面几乎每个新手都经历过,退出vi其实就三步。
第一步,按 Esc 键回到普通模式,多按几下没关系。第二步,确认输入法是英文状态,中文状态下冒号打不出来,后面全卡住。vi 打开文件默认停在普通模式,能移动光标、删字,按 i 才进插入模式打字,打完再按 Esc 回来。第三步,输入冒号加命令,按回车。三步走完就能退出vi。
最常用的四个命令
- :q 直接退出,文件没改过时用它
- :q! 不保存强制退出,改砸了不想留就用它
- :wq 保存并退出,w 是写入,q 是退出
- :x 效果接近 :wq,文件没改动时不更新修改时间
还有两个不带冒号的快捷键:连按两次大写 ZZ 等于保存退出,连按 ZQ 等于不保存退出,手不离键盘时最快。刚打开没改一个字,:q 一下就出去了;改到一半想放弃,:q! 最干净;想保存收工,:wq 一步到位。这三个命令覆盖九成场景,:x 用得少,知道就行。
退不出去时的报错是什么意思
输入 :q 回车后提示 E37: No write since last change,意思是文件改过还没保存,vi 不想让你白改一场。想保留就 :wq,不想要就 :q! 加感叹号强制走。
用只读方式打开时会提示 E45: readonly option is set,真要改就 :wq! 强制写入,权限不够就回头查文件归属,别硬磕。
屏幕上突然多出一堆字母、光标乱跳,那是误进了插入模式。别慌,连按几下 Esc 回到普通模式,再走上面的流程。
真卡死了怎么办
屏幕被输出刷花了,普通模式下按 Ctrl+L 刷新。彻底乱了就换个终端,用 ps 找到 vi 进程 kill 掉,服务器卡顿时 vi 偶尔假死,先等几秒再动手,别乱按一堆键。代价是未保存的改动会丢,所以改重要配置前先 cp 备份一份。
背下三句话就够:改了想留 :wq,改砸了 :q!,状态不明先按 Esc。做到这三句,vi 就困不住人了。