在虚拟机上使用vi命令,核心就一句话:先按Esc回到命令模式,再按i进入插入模式开始编辑,最后输入wq保存退出,新手卡住九成是因为分不清模式。
vi是Linux系统预装的文本编辑器,几乎每个虚拟机镜像里都有它,不装图形界面也能用,文件配置、脚本修改全靠它,它跟Windows上的记事本完全不同,没有可视化的菜单栏,所有操作都通过键盘命令完成,很多新手第一次打开vi,发现打不了字、退不出去,就是因为vi默认处于命令模式,需要先按i才能开始输入。
虚拟机vi命令有哪些?先搞懂三种模式再说
vi有三种模式:命令模式、插入模式、底行模式,新人只用关心前两种,就能完成日常绝大部分编辑工作。
命令模式:vi打开文件后的默认状态
刚执行vi 文件名时,就进入了命令模式,此时敲键盘不会输入文字,而是执行删除、复制、移动光标等操作,比如按下x删除光标所在字符,按下dd删除整行,按下yy复制整行。
命令模式是vi的”总控台”,所有复杂操作都得从这里发起。
插入模式:唯一能输入文字的模式
按下字母i,屏幕左下角会显示-- INSERT --字样,这时才能像普通编辑器一样打字,新手最常见的错误就是打开vi后直接打字,结果发现文档里全是奇怪的字母那些字母被vi当成命令执行了。
退出插入模式只需按一下Esc键,屏幕左下角的-- INSERT --消失,就说明回到了命令模式。
底行模式:用于保存和退出
在命令模式下输入冒号,光标会跳到屏幕底部,此时可以输入保存退出的指令。w代表保存,q代表退出,组合起来是wq,强制替代是wq!,不保存直接退出是q!。
不少新手在虚拟机上修改系统配置文件,比如/etc/nginx/nginx.conf,改完不知道怎么办,直接关了终端,结果改动全部丢失。改完用这个顺序:按Esc,输入冒号wq回车,就一定错不了。
vi怎么退出编辑模式:Esc失效的常见原因
这个疑问在搜索引擎里出现频率极高,很多人在虚拟机里尝试退出插入模式,按了十几下Esc都没反应,以为卡死了,实际情况往往是:
Caps Lock键处于锁定状态
如果键盘锁定了大写,Esc键可能被系统识别为其他输入,先按一下Caps Lock解除锁定,再按Esc试试,虚拟机通过软件模拟键盘,这种情况比物理机更常见。
数字键盘区域被误触
笔记本用户容易误触Num Lock键,造成按键映射异常,按一下Num Lock键后再试Esc。
Ctrl组合键作为兜底方案
按Ctrl + [等效于Esc键,这是vi的硬编码快捷键,功能完全一致且极少失效,虚拟机的键盘捕获如果和宿主机冲突,这个组合键往往比Esc更管用。
三种方式都试过仍无效,可以考虑强制结束当前进程,终端执行pkill -9 vim或pkill -9 vi,但代价是未保存的改动全部丢失,属于最后手段。
虚拟机里必背的一组vi操作命令
初学者不需要背几十条命令,以下列表覆盖日常八成以上使用场景,先掌握这些就足够。
- 光标移动:
h左移,j下移,k上移,l右移,这个设计的逻辑是手不离键盘主区域,比方向键更高效,按G跳到文件末尾,按gg跳到文件开头。 - 快速进入插入模式:按
i(光标前)、a(光标后)、o(下方新起一行),编辑某一行时,用o比移动光标到末尾再回车更省事。 - 删除操作:
x删除单个字符,dd删除整行,3dd连续删除从光标行开始的三行。 - 撤销与恢复:
u撤销上一步操作,Ctrl + r重做,改坏了代码也不用慌,按u一步步退回,这个功能新人一定要记住,mistake成本瞬间降一半。 - 查找:在命令模式输入回车,按
n跳到下一个匹配位置,例如输入/error,能快速定位日志文件里的报错行。 - 显示行号:输入冒号后打
set nu回车,左侧出现行号,排查配置文件报错时,报错信息提示的是行号,有了行号才能精准定位。
复制粘贴这块也常用。y复制,p粘贴,组合起来是yy复制整行,p粘贴到下一行,注意复制必须在命令模式下进行,不能用鼠标框选。
vi命令和vim区别:要不要在虚拟机上装vim
vi和vim的区别是新手问得最多的问题之一,一句话总结:vim是vi的增强升级版,完全兼容vi的用法,同时多了语法高亮、自动缩进、多级撤销等功能。
当前主流Linux发行版中,vi往往是指向vim的软链接,执行vi实际上打开的是vim,也就是说,你学vi命令,跟着练vim完全不影响。
装vim的操作步骤
Debian/Ubuntu家族执行sudo apt update && sudo apt install vim -y,CentOS/RHEL家族执行sudo yum install vim-enhanced -y,安装完成后输入vim --version确认版本号。
vim相比原生vi的实用改进
- 代码高亮,配置
.yml、.conf文件时一眼看清段落结构。 - 语法错误提示,编辑脚本时部分错误当场暴露。
- 可视化块选择,按住
Ctrl + v可同时选中多行进行批量注释,改配置文件效率远超原生vi。 - 命令历史保存,上次编辑过的文件、输入过的命令都能找回。
如果你的虚拟机内存非常紧张,只装了最小化系统,那么原生vi也能完成任务,vim让编辑体验更好,但vi是保底选项。
保存退出全流程:新手常见报错原因排查
学完模式切换和常用命令,最重要的收尾环节就是保存和退出,新手在实际操作中经常碰到以下几种情况。
输入wq却提示E37:文件被他人修改
报错含义是当前文件已被其他进程修改过,vi拒绝直接覆盖,解决办法是先输入e!重新加载新内容,再执行wq保存自己的改动,实际操作中,这种场景多发生在多个终端同时操作同一个文件时。
文件权限不足:保存显示readonly
修改系统目录下的文件时,当前用户可能没有写权限,命令模式输入w !sudo tee %,提权后执行保存,这一招在/etc目录下改配置时极其实用,比新手先退出去用sudo重新打开文件方便得多。
忘记保存直接退出:改动全部丢失
执行q退出时,vi会提示文件已被修改,需要输入确定才能退出,很多新手误以为输入q无效,直接关终端窗口,结果改动全部作废。正确做法是输入q!强制不保存退出,或者回车确认保存,按个人需求选择。
保存退出的完整命令速查表
| 命令 | 含义 |
|---|---|
| 按Esc后输入:wq | 保存并退出 |
| 按Esc后输入:q | 直接退出 |
| 按Esc后输入:q! | 不保存强制退出 |
| 按Esc后输入:wq! | 强制保存退出 |
新手只要把这四个组合背下来,日常操作就不会因保存问题出岔子。
小结
虚拟机里的vi命令本质上就是一个模式切换的游戏:按i进入编辑模式开始打字,按Esc回到命令模式执行操作,输入wq保存退出,一条命令走天下,几组快捷键解千愁。 把这套流程练熟,虚拟机上改系统配置、写脚本文件都不再是难事。
Q&A:虚拟机上vi命令常见问题
vi命令按了i还是不能输入文字怎么办?
按i后屏幕左下角没有出现-- INSERT --,说明当前不在命令模式,或者键盘输入被虚拟机截获,先按两次Esc确保回到命令模式,再按一次i,如果仍无效,检查虚拟机菜单栏的”输入”选项,看是否开启了鼠标捕获或键盘捕获模式,切回”自动捕获”状态,另外确认光标是否落在终端窗口内,点击一下终端窗口再操作。
vi打开的文件内容很乱,怎么恢复?
乱码通常是编码问题,和vi命令本身无关,输入`:set encoding=utf-8`设置编码,再用`:e`重新加载文件,中文环境强烈建议在虚拟机的`/etc/vim/vimrc`文件里加上`set fileencodings=utf-8,gbk`这一行,把中文编码支持配好,否则编辑中文配置文件时经常遇到显示乱码的情况,如果文件是Windows传过来的,还需用`dos2unix`命令转换格式,不然会看到每行末尾有奇怪的`^M`字符。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/928741.html


评论列表(3条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于输入的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于输入的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
读了这篇文章,我深有感触。作者对输入的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!