虚拟机里的vi编辑器,核心命令就三大类:模式切换、光标移动和编辑操作;掌握这些基本语句,你就能在无图形界面的Linux环境中完成绝大多数文件修改任务。
vi基本命令模式:切换是第一步
很多新手在虚拟机里打开vi,第一反应是“怎么按什么都没反应”,原因很简单你处于正常模式,不是插入模式,vi编辑器有两种主要模式:命令模式和插入模式,启动vi时默认进入命令模式,此时所有按键都被解释为命令,而不是输入字符。
三种模式的关系
- 命令模式:打开文件后的默认状态,用于执行删除、复制、粘贴、定位等操作
- 插入模式:按
i、a、o等键进入,此时键盘输入直接写入文本 - 末行模式:按
Esc进入命令模式后,再按冒号键进入,用于保存退出、查找替换等操作
模式切换是vi使用的起点,从命令模式按i(在当前光标前插入)、a(在当前光标后追加)、o(在下一行新开一行插入)都能进入插入模式,退出插入模式统一按Esc回命令模式,在命令模式下按进入末行模式,执行完命令后vi会自动返回命令模式。
虚拟机vi语句基本命令有哪些:按用途拆分
既然问题是“虚拟机vi语句基本命令有哪些”,那么我们把命令按功能场景拆开,每个场景记几个高频的就够用了,日常运维和开发环境调试Linux虚拟机时,用到的vi命令远没你想象的多。
打开与保存文件
打开文件的语法是vi 文件名,如果文件不存在,vi会新建一个缓冲区,保存时才生成文件,保存退出最常见的一组操作:
wq:保存并退出q:不保存退出(未修改时可用)q!:强制退出,放弃所有修改w:只保存不退出w 新文件名:另存为指定文件
如果你在虚拟机里改了系统配置文件后发现改错了,q!就是后悔药,这三个带冒号的命令基本覆盖了所有退场场景。
光标移动命令:别用方向键
vi设计的初衷是手指不离主键盘区,方向键在vi里虽然可用,但效率低,而且部分精简版vi不支持方向键,记住以下移动命令,能大幅提升操作速度:
h、j、k、l:分别代表左、下、上、右移一个字符0:跳到当前行行首- 跳到当前行行尾
gg:跳到文件第一行G:跳到文件最后一行nG:跳到第n行,比如10G就是第10行Ctrl+d:向下翻半屏Ctrl+u:向上翻半屏Ctrl+f:向下翻全屏Ctrl+b:向上翻全屏
在虚拟机日志文件动辄几百行的情况下,gg和G配合nG是排查问题的利器,光标移动命令也是百度上搜索“vi编辑器光标移动命令”时的核心知识点。
插入与删除命令
插入命令决定了你从哪里开始打字,删除命令决定了怎么删得快:
i:光标前插入a:光标后插入o:下方新开一行插入O:上方新开一行插入x:删除光标所在字符dd:删除光标所在整行ndd:从当前行开始向下删n行,比如3dd删三行dw:删除从光标到单词结尾的字符d$:删除从光标到行尾
用dd删整行,用x删单个字符,这是几乎所有Linux运维人员的肌肉记忆,删除错误时,按u撤销,按Ctrl+r重做。
复制粘贴与查找替换
复制粘贴在vi里的逻辑和Windows完全不同,你要先进入命令模式,用
yy复制光标所在行,然后移动光标到目标位置,按p在下方粘贴,按P在上方粘贴。
yy:复制当前行nyy:从当前行开始向下复制n行p:粘贴到光标下一行P:粘贴到光标上一行yw:复制从光标到单词结尾的字符u:撤销上一步操作Ctrl+r:重做被撤销的操作
查找替换需要进入末行模式,输入向下查找,输入向上查找,按n查找下一个,按N查找上一个,替换命令的格式比较固定:
s/旧词/新词:替换光标所在行第一个匹配词s/旧词/新词/g:替换光标所在行所有匹配词%s/旧词/新词/g:替换全文件所有匹配词.,.+3s/旧词/新词/g:替换当前行到下面三行的范围内
常用的是前三个,修改虚拟机里的nginx.conf或sshd_config时,全文件替换操作几乎每天都会用上,搜索“linux vi命令怎么用”的用户,最终都会落到这几个替换命令上。
末行模式的特殊命令
末行模式不只是保存退出和查找替换,还有几个高频语句:
set nu:显示行号set nonu:取消行号nohlsearch:取消高亮搜索e 文件名:重新打开另一个文件r 文件名:把指定文件内容插入到光标位置
显示行号对定位配置文件错误非常实用,比如在虚拟机里调试程序报错到第20行,你要先set nu,再20G跳过去。
实践:在虚拟机里修改配置文件的标准流程
光背命令记不牢,建议你把下面这段流程在虚拟机里走一遍,基本语句的用法就全活了,假设你要修改nginx的监听端口。
第一,打开文件,执行vi /etc/nginx/nginx.conf,进入命令模式,第二,输入
set nu显示行号,方便定位,第三,按/listen回车,找到监听段落,按n在多个匹配间跳转,第四,按i进入插入模式,修改端口号,第五,按Esc退回命令模式,第六,按wq保存退出。
如果你改到一半想放弃,按q!强制退出,这个过程覆盖了模式切换、查找、编辑、保存退出这五类操作,也是“vi命令模式切换”的最典型应用场景。
常见问题Q&A
vi命令模式下无法输入中文怎么办?
部分虚拟机终端的vi不支持中文输入法切换,解决办法是先在终端外把中文内容复制到剪贴板,进入插入模式后右键粘贴,或者在.vimrc配置文件中添加set encoding=utf-8和set fileencodings=utf-8,gbk解决乱码问题。
vi里按了Ctrl+S导致界面卡死怎么恢复?
这不是vi卡死,而是终端暂停输出,按下Ctrl+Q即可恢复,不少新手在虚拟机里误触Ctrl+S后以为vi崩溃,强行关闭窗口导致文件丢失,记住这个细节能避免一次事故。
vi和vim的基本命令有区别吗?
vim是vi的增强版,绝大多数基本命令完全兼容,额外增加了语法高亮、多级撤销等功能,在多数Linux发行版中,输入vi实际启动的是vim(通过别名或软链接实现),因此你学到的vi基本命令在vim环境里都能正常使用,不需要额外学习一套新语法,行业共识认为,先掌握vi命令再过渡到vim是成本最低的学习路径。
回到最初的问题:虚拟机vi语句基本命令有哪些?答案很明确模式切换用i和Esc,移动用h、j、k、l和gg、G,编辑用dd、yy、p,保存退出用wq和q!,把这十个命令练熟,虚拟机里的文本编辑任务你就已经能独立完成了,剩下的命令,工作中遇到再查也来得及。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/723736.html





