vi命令(超详细)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

在编程和系统管理的世界中,vi命令如同一把瑞士军刀,以简洁高效的方式帮助开发者完成文本编辑任务。无论是远程调试服务器配置文件,还是在终端环境下快速修改代码,vi凭借其轻量级、跨平台和强大的命令行特性,始终是程序员的首选工具之一。然而,对于编程初学者和部分中级开发者而言,vi的模式化操作和复杂的快捷键组合常常令人望而却步。本文将通过循序渐进的方式,结合形象的比喻和实际案例,深入解析vi命令的核心功能,帮助读者掌握这一强大工具的基础和进阶技巧。


一、vi命令的三大模式:理解状态切换

vi的精髓在于其独特的“模式化”操作设计。想象vi如同一个拥有三种“人格”的工具:命令模式(普通模式)输入模式底行模式。每种模式对应不同的操作场景,合理切换是高效使用vi的关键。

1.1 命令模式:快速操作的“指挥官”

启动vi后默认进入命令模式。在此模式下,用户可以通过按键直接执行动作,而非输入文本。例如:

  • hjkl:分别对应左、下、上、右方向键,用于快速移动光标(类似“键盘上的方向箭头”)。
  • dd:删除当前行(想象为“剪刀剪断一行文本”)。
  • yy:复制当前行。
  • p:粘贴复制或删除的内容。

案例演示

dd → j → p  

1.2 输入模式:自由编辑的“作家”

通过按下 iao 等键可进入输入模式。例如:

  • i:在光标当前位置插入文本。
  • a:在光标右侧开始输入。
  • o:在当前行下方新开一行(Overwrite模式)。

注意:输入模式下按 Esc 键可返回命令模式,随后输入 :wq(保存并退出)或 :q!(不保存退出)完成操作。

1.3 底行模式:命令行的“控制台”

通过输入 :/ 进入底行模式,可执行更复杂的命令,例如:

  • :w:保存文件。
  • :q:退出vi。
  • :wq:保存并退出。
  • /keyword:搜索关键词(如 /error 查找“error”字样)。

二、基础编辑技巧:从简单到复杂

2.1 基本编辑:增删改查

2.1.1 插入文本

在命令模式下,使用 iao 进入输入模式后即可输入文本。例如:

i → Hello World → Esc → :wq  

2.1.2 删除与修改

  • x:删除光标所在字符。
  • dw:删除光标后的单词(如删除“example”则输入 dw)。
  • r:替换当前字符(如 r → a 将替换光标下的字符为“a”)。

2.1.3 搜索与跳转

在底行模式下输入 /text 可搜索文本,按 n 跳转到下一个匹配项。例如:

/text → n → N(反向跳转)  

2.2 复制与粘贴的进阶用法

vi允许通过指定行号或偏移量进行批量操作:

  • yy 复制当前行,3yy 复制三行。
  • dd 删除当前行,5dd 删除五行。
  • p 粘贴到光标下方,P 粘贴到光标上方。

案例:复制第5到第10行并粘贴到第20行后:

:5,10y  
20G → p  

三、vi命令的高级功能:提升效率的“黑科技”

3.1 宏(Macro):重复操作的自动化

宏功能可记录一系列操作并重复执行。例如,快速为多个变量添加注释:

qa → i // → Esc → j → q  
5@a  

3.2 可视模式:批量编辑的“画圈圈”

按下 v 进入可视模式,可高亮选中文本后执行操作:

  • 选中多行后按 d 删除,或 y 复制。
  • >< 可缩进或取消缩进选中区域。

3.3 拼写检查与替换

在底行模式下使用以下命令:

  • :set spell:开启拼写检查。
  • :s/old/new/g:替换当前行所有“old”为“new”。
  • :%s/old/new/g:替换全文。

四、实战案例:用vi命令优化开发流程

4.1 调试服务器日志

假设需要快速定位并修改Nginx配置文件中的端口号:

vi /etc/nginx/nginx.conf  

/80 → :%s/80/8080/g  

:wq  

4.2 批量注释代码

在编写Python脚本时,需暂时注释多行代码:

v → j → j → I → # → Esc  

五、常见问题与最佳实践

5.1 快速退出vi的技巧

  • 误操作时强制退出不保存::q!
  • 文件被占用时尝试强制保存::w !sudo tee %

5.2 配置个性化设置

通过修改 ~/.vimrc 文件提升体验,例如:

set number        # 显示行号  
set tabstop=4     # 设置Tab为4个空格  
syntax on         # 开启语法高亮  

结论:vi命令的永不过时

尽管现代编辑器功能日益丰富,vi命令凭借其轻量、稳定和模式化设计,依然在编程和系统运维中占据核心地位。掌握vi不仅意味着提升文本编辑效率,更是一种对程序员工具链深度理解的体现。从基础的增删改查到高级的宏操作,vi的学习曲线虽陡峭,但一旦掌握,将成为开发者手中不可或缺的“瑞士军刀”。

下一步行动:建议读者通过实际操作练习本文提到的命令,并逐步探索vi的插件生态(如Vim插件),进一步释放其潜力。记住,熟练使用vi的关键在于模式切换的肌肉记忆常用命令的高频练习

最新发布