提起 vi/vim 编辑器,许多刚接触 Linux 的新手常会觉得它上手难度高、命令复杂度大,甚至希望能把所有快捷键都一口气背下来。其实完全没有必要。这类编辑器的真正关键,在于“在反复使用中逐渐掌握”——你不需要记全所有功能,但必须清楚三件最重要也最基础的事:当前处在哪种操作模式、如何安全退出编辑器、以及怎样操作才不丢失文件内容。

简单来说,vi 和 vim 的精髓不在于“学完所有命令”,而在于“通过实际使用逐渐熟练”。
如何快速判断自己当前处于哪种模式?
屏幕最下方通常就是答案。如果没有任何提示文字,那你大概率是在命令模式——要么是刚打开文件,要么是刚刚按过 ESC 键。如果界面底部出现了 -- INSERT -- 或 -- REPLACE --,则表示你正在输入或替换文本。而最底下一行如果出现了以冒号 : 开头的输入框,恭喜,你已经进入了底线命令模式,可以执行保存、退出、搜索替换等操作。
初学者最容易遇到的麻烦是什么?想输入文字,却不小心按了 i 以外的字母(比如误按到 l,结果光标只是向右移动了一格);或者想保存退出,却发现自己还在插入模式,于是输入的 :wq 全都变成了普通字符显示在屏幕上。请记住这个万能逃生技巧:无论当前状态多混乱,连续按两次 ESC 键,几乎总能让你回到安全的命令模式。
保存和退出总是报错?先掌握这三条核心命令
关于保存和退出,其实只有几个关键命令,但执行顺序和组合方式很重要:
:w—— 只保存文件,不退出编辑器。:q—— 只退出编辑器,不保存内容(但如果文件已被修改,编辑器会拒绝退出,并提示你先保存)。:q!—— 强制退出,并丢弃所有未保存的修改。当你改乱内容想从头再来时,这个命令非常实用。:wq和ZZ—— 两者效果相同,都是保存并退出。但ZZ操作更快,因为它不需要进入底线命令模式,在普通命令模式下直接按下即可。
如果遇到类似 E37: No write since last change (add ! to override) 的报错信息,不必紧张。这只是编辑器在友好地提醒你:“文件已有改动但尚未保存,确认要退出吗?如果确认,请在命令末尾加上感叹号。” 因此,:q! 本身是安全可靠的,它正是用来应对这种情况的。
光标移动与文本操作:尽量别依赖方向键
在终端或远程服务器环境中,方向键有时会失效,但 vi/vim 原生的移动指令永远可靠。掌握下面这几个常用操作,你的编辑效率就能提升一大截:
- 行内跳转:
0(数字零)跳到行首,$跳到行尾。 - 全文跳转:
gg跳转到文件开头,G跳转到文件末尾。想去特定行?比如第 55 行,直接输入55G即可。 - 文本操作:
dd删除整行,yy复制整行,p将内容粘贴到下一行。还有x删除光标所在字符,X删除光标前一个字符(注意大小写含义不同)。
可别小看 dd 加 p 这个组合。它本质上就是剪切粘贴,而且比依赖系统剪贴板的方式更快、更稳定,尤其是在没有图形界面的服务器环境下,这一优势尤为突出。
搜索与替换:不是一次性操作,要讲究方法
查找文本用 /关键词(向下搜索),然后按 n 跳转到下一个匹配项,按 N 返回上一个匹配项。用 ?关键词 则是向上搜索。
替换操作需要在底线命令模式下执行,以下是几种常用格式:
:s/旧文本/新文本/—— 替换当前行第一个匹配项。:s/旧文本/新文本/g—— 替换当前行所有匹配项(g代表全局替换)。:%s/旧文本/新文本/g—— 替换全文所有匹配项(%表示从第一行到最后一行)。:%s/旧文本/新文本/gc—— 每次替换前让你逐一确认(c代表确认)。
这里有两个常见陷阱:一是用了 :s/old/new 却忘了加 g,结果只替换了当前行的第一处;二是想替换全文却漏掉了开头的 %,只在当前行操作了半天。稳妥起见,在执行替换前,可以先用 /旧文本 搜索一下,确认目标内容确实存在再执行操作。
说到底,vi/vim 编辑器的真正难点不在于记住多少条命令,而在于培养“模式意识”这种操作习惯。每次敲键盘前,先下意识地问自己三个问题:我现在能直接输入文字吗?是不是需要先按 ESC 返回命令模式?退出前,该做的保存都执行好了吗?养成这种判断习惯,远比死记硬背快捷键更能真正提升你的编辑效率。
