Linux vi/vim(建议收藏)

更新时间:

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 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/vim 是一款近乎传奇的文本编辑器。它如同一把“瑞士军刀”,既能完成基础的文本修改,也能通过深度配置实现复杂开发场景的高效操作。对于编程初学者而言,掌握 vi/vim 是解锁 Linux 系统潜能的第一把钥匙;对于中级开发者来说,熟练使用 vi/vim 的高级功能则能显著提升工作效率。本文将从零开始,通过循序渐进的方式,结合实际案例与代码示例,帮助读者理解并掌握这款工具的核心功能。


一、vi/vim 的基础操作与核心概念

1.1 启动与退出

启动 vi/vim 非常简单,只需在终端输入命令:

vi filename.txt  

或使用增强版:

vim filename.txt  

进入编辑器后,默认处于 命令模式(Command Mode)。若想退出,需按 Esc 键确保处于命令模式,再输入 :q!(强制退出不保存)或 :wq(保存并退出)。

比喻
可以将 vi/vim 的模式切换想象成“三个世界”——命令模式是控制中心,插入模式是编辑的“创作空间”,而底行模式(通过 : 进入)是执行高级命令的“魔法界面”。


1.2 三种核心模式详解

表格:vi/vim 的三种模式对比

模式类型触发方式主要功能
命令模式直接启动或按 Esc移动光标、删除/复制文本
插入模式输入 i, a, o直接编辑文本内容
底行模式:保存文件、退出、搜索等操作

模式切换技巧:

  • 插入模式:通过 i(光标前插入)、a(光标后插入)、O(上一行插入)、o(下一行插入)进入。
  • 底行模式:按 : 后输入命令,例如 :w(保存)、:q(退出)、:e filename(打开文件)。

二、高效编辑的进阶技巧

2.1 快捷键与移动光标

vi/vim 的核心优势在于通过键盘快捷键实现“无需鼠标”的高效操作。以下是一些高频命令:

  • 移动光标
    • h → 左、l → 右、k → 上、j → 下(可联想为方向键的“HJKL”排列)。
    • 0 → 行首、$ → 行尾、gg → 文件开头、G → 文件末尾。
  • 文本操作
    • dd → 删除当前行(可叠加数字,如 3dd 删除 3 行)。
    • yy → 复制当前行,p → 粘贴。
    • u → 撤销,Ctrl + r → 重做。

案例
假设需快速删除第 5 到第 10 行内容,可在命令模式下输入 5G 跳转到第 5 行,再输入 5dd 删除 5 行(覆盖 5-9 行),或直接输入 :5,10d(底行模式命令)。


2.2 搜索与替换

vi/vim 的搜索功能支持正则表达式,极大提升了文本处理效率:

  • 搜索:在命令模式输入 /关键词,按 n 下一个、N 上一个。
  • 替换:底行模式输入 :%s/old/new/g(全局替换)或 :%s/old/new/gc(确认后替换)。

案例
假设需将文件中所有 error 替换为 warning,且仅替换当前行:

:s/error/warning/g  

若需替换全文并确认每处修改,命令变为:

:%s/error/warning/gc  

2.3 宏(Macro)与多文件操作

宏录制是 vi/vim 的高级功能之一,适合重复性任务:

  1. q + 字母(如 q a)开始录制宏到寄存器 a
  2. 执行需重复的操作(如修改代码缩进)。
  3. 再次按 q 结束录制。
  4. 使用 @a 执行宏,@@ 重复上一次宏操作。

多文件操作
通过 :sp filename:vsp filename 可垂直/水平分割窗口,同时编辑多个文件。例如:

:sp main.c  

会将窗口分为左右两部分,左侧显示当前文件,右侧显示 main.c


三、配置与插件:让 vi/vim 更强大

3.1 基础配置优化

通过自定义 .vimrc 文件(位于用户主目录),可显著提升编辑体验。例如:

" 启用语法高亮  
syntax on  
" 设置缩进为 4 空格  
set tabstop=4  
set shiftwidth=4  
" 显示行号  
set number  

保存后需重启 vim 或输入 :source ~/.vimrc 生效。


3.2 插件管理与插件推荐

插件管理工具vim-plug 能简化扩展安装。例如,安装 NERDTree(文件浏览器)的步骤:

  1. 安装 vim-plug
    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \  
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim  
    
  2. .vimrc 中添加:
    call plug#begin('~/.vim/plugged')  
    Plug 'preservim/nerdtree'  
    call plug#end()  
    
  3. 重启 vim 后输入 :PlugInstall

常用插件推荐

  • YouCompleteMe:代码补全工具。
  • ALE:实时代码语法检查。
  • Vim-Airline:美化状态栏。

四、实际场景应用与调试技巧

4.1 快速修改配置文件

在 Linux 系统中,修改 /etc/hosts 文件时,vi/vim 是最直接的工具。例如,添加一条 DNS 映射:

:4i  
127.0.0.1   localhost  
<Esc>  
:wq  

(输入 4i 在第四行插入文本,按 Esc 返回命令模式后保存退出)。


4.2 调试与错误恢复

若因误操作导致文件损坏,可利用 vi/vim 的 恢复模式

vim -r filename.txt  

此命令会列出所有可恢复的临时文件,选择后即可尝试修复。


结论

掌握 Linux vi/vim 是每位开发者进阶路上的重要一步。从基础的文件编辑到宏的高级应用,从配置优化到插件扩展,vi/vim 的灵活性与高效性始终如一。尽管其学习曲线较陡峭,但通过持续练习与场景应用,开发者能逐渐体会到“无鼠标编程”的流畅体验。无论是快速修改系统配置,还是在代码调试中游刃有余,vi/vim 都将成为你技术工具箱中不可或缺的“瑞士军刀”。

实践建议

  • 每天用 vi/vim 完成 10 分钟的文本编辑练习。
  • 尝试将常用操作封装为宏或自定义快捷键。
  • 逐步完善 .vimrc 配置,打造个性化工作流。

通过本文的讲解与案例,希望读者能建立起对 vi/vim 的系统认知,并在后续实践中不断深化技能。

最新发布