虚拟机命令vi怎么用?这是每个Linux新手都绕不开的第一道坎,vi是所有Linux发行版和虚拟机系统内置的通用文本编辑器,掌握它不需要安装任何额外软件,你只需要学会三种模式切换和几个核心命令,就能完成绝大多数编辑任务。
vi编辑器到底是什么:为什么虚拟机上非用它不可
很多刚接触Linux虚拟机的朋友会疑惑:Windows上有记事本,有Word,为什么一到Linux终端里就非得用vi?这背后其实是个很实在的原因。
虚拟机环境下的特殊性:没有图形界面怎么办
大多数云服务器、远程连接场景下,你面对的就是一个黑乎乎的终端窗口,根本没有桌面环境可用,Linux运维的核心工作,有相当一部分时间是在命令行修改配置文件,比如网卡配置、软件源列表、服务参数等,vi就是终端环境下最普及的编辑器,它出现在每一台Linux机器上,不会因为你是CentOS、Ubuntu还是Debian而缺席。
行业共识认为:只要你在终端里工作超过一天,就必然会在某个时刻被vi”逼着”完成一次编辑任务。
vi和vim的区别:两个名字别搞混
在输入vim命令时,大多数Linux发行版实际打开的是vim(Vi Improved),它是vi的增强版,区别在于:vim支持语法高亮和多级撤销,更推荐直接养成使用vim命令的习惯,但教程和文档中提到的vi操作方式完全同样适用。
虚拟机命令vi怎么用的核心:先理解”三种模式”这个概念
新手用vi最容易犯的错就是:打开文件后噼里啪啦打字,结果什么都没输入进去,然后拼命按Ctrl+C、Ctrl+Z,问题根源在于你根本不清楚vi和普通编辑器的核心差异。
vi不只是一个编辑器,它更像个带状态切换的工具,它有三种运行状态,你必须在它们之间熟练切换才能正常使用。
命令模式:你进入vi后所在的初始状态
打开vi的瞬间,你就处于命令模式,这个模式下,你按下的几乎所有按键都不是输入文字,而是操作指令比如删除一行、复制一段、移动光标,很多新手卡在这一步,就是因为把命令模式当成了输入模式。
插入模式:真正往文件里打字的状态
在命令模式下按i(光标前插入)或a(光标后插入),就进入插入模式,此时你才能像在普通文本编辑器里一样打字,屏幕左下角会显示-- INSERT --标识,提醒你当前状态。
末行模式:执行保存、退出、搜索等底层操作
在命令模式下按冒号,光标会跳到屏幕最底部,这就是末行模式,在这里输入w保存、q退出、wq保存并退出、q!不保存强制退出,新手最容易混淆的就是:先按了wq想保存,但因为没在命令模式下按,结果屏幕上出现一串乱码。
vi编辑器基本操作命令清单:高频命令逐个说清楚
理解了三种模式后,接下来是实操环节,以下命令按使用频率排序,建议一边在虚拟机里练习一边记忆。
进入和退出:第一步和最后一步怎么操作
- 打开文件:
vi 文件名,如果文件不存在会自动创建新文件 - 退出且不保存:按
Esc确保回到命令模式,然后输入q!回车 - 保存并退出:按
Esc,输入wq回车 - 只保存不退出:按
Esc,输入w回车
有个常见痛点对新手非常劝退:当你按Esc后,不确定自己是不是已经回到命令模式,判断方法很简单连按两下Esc,听到”嘀”声或底部提示消失,就说明已经回到命令模式。
光标移动:别用方向键,效率差异明显
在小键盘或方向键可用的情况下,新手倾向于用方向键移动光标,这当然没问题,但真正的效率提升来自命令模式下的字母键:
h、j、k、l分别代表左、下、上、右0跳到行首,跳到行尾gg跳到文件第一行,G跳到文件最后一行数字直接跳到指定行,比如输入再输入120回车,直接跳到第120行
在处理几百行的配置文件时,数字跳转的效率要远高于一行一行方向键翻页,这个能力是Linux编辑器独有的,也是vi在运维场景中被长期保留的原因之一。
删除、复制、粘贴与撤销:改错内容后的救命稻草
新手经常操作失误的内容编辑命令,整理如下:
删除类:
x:删除光标所在字符dd:删除光标所在整行dw:删除光标位置到单词末尾
复制粘贴类:
yy:复制光标所在行p:粘贴到光标下方P:粘贴到光标上方
撤销重做类:
u:撤销上一步操作Ctrl+r:重做(取消刚才的撤销)
这里有个非常实用的建议:每次进入vi后,先做一次u撤销测试,确认自己处于命令模式再做操作,能规避绝大多数误操作。
查找与替换:处理大文件时的效率工具
使用进行向下搜索,按n跳到下一个匹配,按N跳到上一个匹配,这个操作在日常运维排错时利用率非常高,比如搜索error关键字或IP地址。
替换操作用末行模式完成,语法为:
%s/旧内容/新内容/g:全文件替换
比如把文件中的所有localhost替换为服务器IP地址,输入%s/localhost/192.168.1.100/g回车即可,如果想保留修改前的文件内容,先执行w保存,再做替换,这样可以对比前后差异。
命令模式的组合用法:让vi从”能改文件”变成”高效改文件”
单个命令记熟后,组合使用是效率倍增的关键,比如同时删除并插入一行来重写内容,可使用S(删除整行并进入插入模式),顺序为:按Esc进入命令模式 → 按S → 直接输入新内容。
再比如需要将第5行的内容复制到第20行,操作路径为:
- 输入
5回车跳转到第5行 - 按
yy复制该行 - 输入
20回车跳转到第20行 - 按
p粘贴
这类组合操作在配置多节点服务时非常常用,实战中你会发现,不依赖鼠标完全用键盘完成所有操作,效率比图形界面编辑器高出很多。
虚拟机里vi用不了怎么办:常见问题与排查路径
很多新手学vi时最常遇到的问题是输入vi后系统提示命令未找到,这件事的排查思路其实很清晰。
排查思路一:命令名称是否正确
有些最小化安装的系统只有vi没有vim,有些则相反,尝试输入vim看是否能打开,如果不确定,可用which vi和which vim查看命令位置,只要返回路径说明存在。
排查思路二:是否安装完整版vim
极简版vi(如BusyBox vi)功能有限,不支持语法高亮,部分组合命令也无法使用,安装完整版vim的命令为:
- Ubuntu/Debian:
sudo apt install vim -y - CentOS/RHEL:
sudo yum install vim-enhanced -y
装完后再次执行vim 文件名,界面色彩和操作反馈都会有明显提升。
排查思路三:在SSH远程连接场景下的注意事项
如果你是通过Xshell、Putty或MobaXterm远程连接虚拟机,按Ctrl+S会导致终端冻结毫无响应,此时按Ctrl+Q解锁终端,这个坑非常隐蔽,因为终端不报错,但所有按键都失效,不少初学者会误以为是虚拟机卡死而强制关闭窗口,最终导致配置丢失,正确的恢复方法是先按Ctrl+Q,确认终端响应后再按Esc回到命令模式。
vi编辑文件命令的高级技巧:借助配置文件提升使用体验
在虚拟机里高频使用vi和vim的人,一定会去配置vimrc文件,这是vim的用户配置文件,位于用户主目录下,文件名为.vimrc。
常用的基础配置项如下:
set number:显示行号syntax on:开启语法高亮set tabstop=4:设置Tab缩进为4个空格set ignorecase:搜索时忽略大小写
保存配置文件后重开vim就会自动生效,这个配置一次投入、长期收益,很多运维工程师第一次进入别人的服务器时,会习惯性地cat ~/.vimrc看一眼对方的配置,相当于看到对方的”顺手程度”。
虚拟机命令vi怎么用的完整学习路径建议
如果你想要真正熟练vi,按以下阶段推进比较科学:
- 第一周:每天至少用vi修改一个配置文件,强制自己不用鼠标,只用
h、j、k、l移动光标 - 第二周:开始使用
dd、yy、p组合命令配合数字前缀,比如3dd一次删除3行 - 第三周:接触多文件编辑,比如
vi file1 file2,用n切换下一个文件,用N切换到上一个文件
等到删除、复制、粘贴、查找、替换这五类操作形成肌肉记忆时,你就不再需要特意”学”vi了,它已经成为你操作虚拟机时最自然的一部分。### 为什么每次修改完都要用vi:虚拟机单机环境下的编辑刚需
在真实运维或开发场景中,不少操作并不需要vi上场,比如查看日志文件可以用tail,统计行数可以用wc -l,但如果要改配置、写脚本、调整系统参数,vi几乎是终端环境唯一可靠的编辑工具,这也是它在虚拟机里不可替代的原因你无法保证所有目标机器都有图形界面,但几乎都能开一个vi会话。
一个典型场景是:当你通过云端控制台重置了Linux虚拟机的root密码,或者调整SSH端口时,需要修改/etc/ssh/sshd_config,这个文件只有root权限可写,图形界面下右键编辑很容易被权限拦截,但在终端里一条sudo vi /etc/ssh/sshd_config就直接解决了权限和路径两个问题,可见vi在权限敏感操作中的实用价值。
初学常踩的坑:三个高频错误帮你提前避雷
比起直接背命令,先知道哪些做法容易让新手反反复复卡壳会更有帮助。
频繁按Esc想退出vi
很多新手在命令模式里输入Esc想退出编辑器,但vi设计里Esc是用来回到命令模式的,不会退出程序,正确的退出方式是进入末行模式后输入q!或wq,这一点必须牢记住。
在命令模式直接输入字母想插入文本
刚接触时相当一部分人会直接在打开文件后输入单词或字母,发现屏幕毫无变化或出现类似“这是命令”的提示,这不是键盘问题,而是vi设置里命令模式并不接受字符输入,解决办法是确保左下角出现-- INSERT --标识后再打字。
在插入模式下输入命令
在插入模式里输入dd不会删除一行,它们会被当作普通文本插进文件里,要执行删除命令,必须先按Esc回到命令模式,这点和第一个错误正好相反,但同样是操作模式没切换清楚,导致文件内容被意外改动。
结合虚拟机使用场景的vi命令实用示例
从实际运行频繁的虚拟机操作里选三个典型场景,每个场景都直接用vi解决一个具体问题。
修改网卡配置固定IP地址
在VMware或VirtualBox里新建虚拟机后默认可能是DHCP分配IP,但重启后IP会变,这回导致SSH连接不稳定,编辑网卡配置文件时使用:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
进入vi后,先在命令模式中按/BOOTPROTO搜索DHCP设置,按n跳到目标位置,然后按i进入插入模式,将
BOOTPROTO="dhcp"改为BOOTPROTO="static",添加IPADDR=192.168.1.100、NETMASK=255.255.255.0、GATEWAY=192.168.1.1这三行后按Esc,输入wq保存退出,这个操作在刚学虚拟机网络配置时几乎是必做练习,而vi就是完成它的工具。
编写一个简单的Shell自动化脚本
在虚拟机上写个批量巡检脚本很常见,比如检查系统磁盘占用、查看内存使用,使用vi创建脚本:
vi disk_check.sh
命令模式按i进入插入模式,逐行输入脚本内容,完成后按Esc,输入wq保存退出,接着在终端里给自己加执行权限:chmod +x disk_check.sh,然后./disk_check.sh即可运行,整个过程全部在终端完成,不需要图形编辑器来转存文件,严谨且不易出错。
临时修改文件后快速恢复原状
遇到调试配置文件但是不确定改动是否安全时,一个常用手法是复制原文件备份后再编辑:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak vi /etc/nginx/nginx.conf
如果改错了但还在vi里,用q!退出不保存,如果你又保存了也没关系,随时可以用备份文件恢复原来的内容:cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf,这种用拷贝做双保险的习惯很值得在虚拟机里养成,因为快照功能虽然好用,但如果只改一个文件,拷贝备份明显更快。
用vi时最实用的快捷操作思维
下面这些操作方式不是单个命令的记忆负担,而是能自然串起流程的“快捷键思维”。
批量缩进与多行操作:改代码和配置文件时最舒服
如果需要调整一段脚本的整体缩进,在插入模式下操作非常繁琐,但命令模式下后缀数字会很好用:
10dd删除后面10行5yy复制从光标起共5行3p把缓冲区内容连续粘贴3次
缩进操作用>>往右缩进,<<往左缩进,配合行号范围会更灵活:5,15>表示将第5到第15行整体右移一个tab缩进。
可视模式选文本:让vi不再只是逐行操作
按下v进入可视模式后,用h、j、k、l移动光标会高亮选中文本,选好后按y复制,或是d删除,甚至按直接对选中区间执行替换命令,可视模式对刚学vi的人来说特别亲切,因为它最接近日常Windows下拖鼠标选中的直觉。
多文件操作:省去频繁进出vi的重复劳动
当一次要改两个或更多文件时,不用开多个终端反复进出vi:
vi /etc/hosts /etc/hostname
在vi里用n切换下一个文件,N回到上一个文件,ls列出所有打开文件,b2跳到编号为2的文件,这在对比多台服务器配置差异时尤其顺手,不用来回关闭窗口再打开新路径。
Q&A
问题:虚拟机中的vi命令和本地的vi有区别吗?
同样一套vi版本(比如vim)在虚拟机内部和宿主机终端里操作逻辑完全一致,区别完全来自终端模拟器的键盘映射或编码设置,比如Windows下用Xshell连接时,退格键可能发不对字符,但实际执行的都是同一个vi进程,真正有差异的是嵌入式环境里的BusyBox vi,功能裁剪较多,不支持可视模式和部分扩展命令。
问题:vi打开文件后按i无法进入插入模式,看底部也没出现INSERT提示,为什么?
多数泄露是键盘布局或终端类型问题,检查终端模拟器是否把按键拦截了,常见的是把Ctrl+S当成软件流控,导致终端冻结,此时每个按键都被缓冲但屏幕不更新,看起来就像“卡死但并没有真正失效”,按Ctrl+Q解除锁定后重新按i进入插入模式,另一个原因是当前你不在vi内部,误打开了系统自带帮助页,先按q退出再看。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/623253.html





