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 的高级功能之一,适合重复性任务:
- 按
q
+ 字母(如q a
)开始录制宏到寄存器a
。 - 执行需重复的操作(如修改代码缩进)。
- 再次按
q
结束录制。 - 使用
@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
(文件浏览器)的步骤:
- 安装
vim-plug
:curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- 在
.vimrc
中添加:call plug#begin('~/.vim/plugged') Plug 'preservim/nerdtree' call plug#end()
- 重启 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 的系统认知,并在后续实践中不断深化技能。