linux vi命令(超详细)

更新时间:

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

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

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

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

在 Linux 系统的日常开发与运维场景中,vi 命令作为一款轻量级、功能强大的文本编辑器,始终占据着核心地位。无论是快速修改配置文件,还是编写简单的脚本代码,vi 凭借其高效的键盘操作和跨平台特性,成为开发者不可或缺的工具。对于编程初学者而言,掌握 vi 命令不仅是提升工作效率的必要技能,更是理解 Linux 环境底层逻辑的重要入口。本文将以循序渐进的方式,从基础操作到高级技巧,全面解析 vi 命令的核心功能,并通过实际案例帮助读者快速上手。


一、vi 命令的核心模式解析

vi 的强大功能源于其独特的“模式”设计,这种设计将编辑流程划分为不同的操作阶段,每个阶段对应不同的功能。理解模式切换是掌握 vi 的关键。

1.1 普通模式(Normal Mode)

启动 vi 后默认进入普通模式,此时键盘输入会被视为命令而非文本。例如,输入 hjkl 可分别实现“左、下、上、右”方向移动光标。这一模式如同驾驶舱的控制台,负责协调所有操作:

h → 左移一格  
j → 下移一行  
k → 上移一行  
l → 右移一格  

1.2 插入模式(Insert Mode)

通过按 iao 等键可进入插入模式,此时可直接输入文本。例如:

  • i:在光标前插入文本
  • a:在光标后插入文本
  • o:在当前行下方新建一行

1.3 命令行模式(Command-Line Mode)

: 进入命令行模式,用于执行保存(w)、退出(q)、搜索(/)等全局操作。例如:

:w → 保存文件  
:q → 退出 vi  
:wq → 保存并退出  

比喻说明:可将 vi 的三种模式比作“驾驶汽车”:普通模式是方向盘,控制方向;插入模式是油门,负责输入内容;命令行模式是仪表盘,提供全局指令。


二、基础操作与常用命令

2.1 文件操作命令

  • 打开文件vi filename
    vi /etc/hosts  
    
  • 新建文件:若文件不存在,vi 会自动创建。
  • 退出不保存:q!(需注意,强制退出可能丢失未保存内容)

2.2 导航与定位

  • 快速移动
    $ → 移动到当前行尾部  
    0 → 移动到当前行首部  
    gg → 跳转到文件首行  
    G → 跳转到文件末尾  
    
  • 跳转到指定行:输入 :行号,例如 :10 跳转到第 10 行。

2.3 文本编辑命令

  • 删除操作
    x → 删除光标所在字符  
    dd → 删除当前行(配合数字可批量删除,如 `3dd` 删除三行)  
    
  • 复制与粘贴
    yy → 复制当前行  
    p → 在光标后粘贴  
    
  • 撤销与重做
    u → 撤销上一步操作  
    Ctrl + r → 重做被撤销的操作  
    

案例演示
假设需要删除文件 test.txt 中的第三行内容,操作步骤如下:

1. 输入 `vi test.txt` 进入编辑界面  
2. 输入 `3G` 跳转到第三行  
3. 按 `dd` 删除该行  
4. 最后输入 `:wq` 保存退出  

三、进阶技巧与实用场景

3.1 正则表达式搜索与替换

vi 支持通过正则表达式实现高效文本处理。例如:

  • 搜索文本:在普通模式下输入 /关键词,按 nN 循环跳转匹配项。
  • 全局替换:在命令行模式输入 :%s/旧文本/新文本/gg 表示全局替换)。

案例:将文件中所有 old_string 替换为 new_string

:%s/old_string/new_string/g  

3.2 多文件操作与宏录制

  • 多文件编辑:使用 :sp:vsp 命令可同时打开多个文件的分屏界面。
  • 宏录制:通过 q 键录制重复操作,例如:
    qq → 开始录制宏  
    (执行一系列操作后)  
    q → 停止录制  
    @q → 回放宏操作  
    

3.3 可视化模式与块选择

v 进入可视模式,可高亮选择文本,配合 y 复制、d 删除等操作。按 Ctrl + v 进入块选择模式,可精准选择矩形区域。


四、常见问题与解决方案

4.1 忘记如何退出 vi

若误操作进入 vi 后不知如何退出,可按以下步骤:

  1. Esc 键确保处于普通模式。
  2. 输入 :q! 强制退出(不保存修改)。

4.2 文件权限不足导致无法保存

当修改系统文件(如 /etc/passwd)时,若出现 E212: Can't open file for writing 错误,需以管理员权限运行:

sudo vi /etc/passwd  

4.3 配置自定义快捷键

通过修改 ~/.vimrc 文件可自定义 vi 行为。例如,添加以下内容启用语法高亮:

syntax on  
set number  

五、vi 命令的生态扩展与替代工具

5.1 Vim 的增强版

Vim 是 vi 的扩展版本,支持更多功能(如插件、图形界面)。安装命令:

sudo apt install vim  

5.2 与现代编辑器的对比

工具特点
nano界面友好,适合新手,但功能相对基础
emacs功能强大,支持自定义,学习曲线较陡峭
VS Code图形化编辑器,但需依赖 GUI 环境

5.3 使用场景建议

  • 快速修改配置文件 → 优先选择 vi
  • 编写复杂脚本 → 可结合 Vim 插件提升效率
  • 远程服务器运维vi 是唯一无需额外安装的轻量工具

结论

vi 命令作为 Linux 环境中的“瑞士军刀”,其简洁的设计与强大的功能使其历经数十年仍被广泛使用。通过掌握基础模式切换、文本编辑命令以及高级技巧,开发者不仅能提升日常工作效率,更能深入理解 Linux 系统的底层逻辑。无论是初学者通过简单案例入门,还是中级开发者探索宏录制、正则表达式等进阶功能,vi 都能提供“用则有,按则灵”的实用价值。

在数字化时代,掌握 vi 命令不仅是技术能力的体现,更是一种对 Linux 文化传承的致敬。希望本文能成为读者探索 vi 世界的指南,让每一次键盘敲击都更加得心应手。

最新发布