Linux 基础:Vi/Vim 编辑器
一、Vi 与 Vim 的核心区别
Vim 是 Vi 的进阶版本,二者在起源与功能上既有传承也有明显差异,具体对比如下:
-
Vi(Visual Editor)
1976 年由 BSD Unix 核心开发者 Bill Joy 设计,是 Unix 系统原生自带的轻量级文本编辑器。受早期硬件资源限制,Vi 仅提供文本编辑核心功能(如基础光标移动、简单增删改),但首次提出“模式化编辑”理念,为后续编辑器奠定了操作范式。 -
Vim(Vi IMproved)
1991 年由荷兰程序员 Bram Moolenaar 开发,初衷是“改进 Vi 的体验”,因此在完全兼容 Vi 操作逻辑的基础上,新增了大量实用功能,解决了 Vi 的诸多局限:- 语法高亮(支持不同编程语言的代码着色,提升可读性)
- 多级撤销/重做(可回溯多步操作,避免误操作损失)
- 插件扩展系统(支持通过插件增强功能,如自动补全、代码格式化)
- 多文件/多窗口编辑(可同时打开多个文件,或拆分窗口对比编辑)
- 强化搜索替换(支持正则表达式,可实现精准的全局替换)
如今主流 Linux/Unix 系统中,输入 vi
命令实际调用的往往是 Vim 的“兼容模式”,无需额外配置即可沿用 Vi 的操作习惯,兼顾兼容性与功能丰富性。
二、Vim 的三种核心模式:理解模式化编辑
Vim 的“模式化编辑”是其与记事本、VS Code 等编辑器的最大区别——不同模式对应不同操作场景,切换模式是高效使用 Vim 的关键:
1. 命令模式(默认启动模式)
打开 Vim 后自动进入的模式,核心作用是“控制操作”而非“输入文本”:
- 基础功能:移动光标、文本删改、复制粘贴,以及切换到其他模式;
- 常用示例:
dd
删除当前行(若需删除 3 行,可输入3dd
)、yy
复制当前行、p
粘贴到光标下方、h/l/k/j
分别控制光标左/右/上/下移动。
2. 输入入模式(文本输入模式)
仅用于“输入文字”,需从命令模式通过特定按键触发,不同按键对应不同插入位置:
- 触发方式:
i
(在光标前插入)、a
(在光标后插入)、o
(在当前行下方新建空白行并插入); - 退出方式:按
Esc
键即可返回命令模式(建议养成“输入完立即退到命令模式”的习惯,减少误操作)。
3. 底线命令模式(Ex 模式)
通过命令模式按 :
触发,光标会移至窗口底部,用于执行“文件管理”“全局操作”等高级命令:
-
常用场景:保存、退出、搜索替换、文件跳转;
-
典型命令:
:w
(保存文件)、:q
(退出 Vim,未保存时无法退出)、:wq
(保存并退出)、:q!
(强制退出,放弃所有未保存修改)、:%s/旧内容/新内容/g
(全文替换,%
代表“全文”,g
代表“全局替换”)。
三、Vim 常见操作速查表
为方便快速查阅,以下整理了日常使用中高频操作的按键与说明:
操作场景 | 按键/命令 | 补充说明 |
---|---|---|
打开/新建文件 | vim 文件名 | 若文件不存在,Vim 会在保存时自动新建该文件 |
光标移动 | h (左)l (右)k (上)j (下) | 无需依赖方向键,适合盲打,提升操作效率 |
删除指定行数 | 数字 + dd (如 3dd ) | 单独 dd 仅删除当前行,加数字可批量删除 |
复制指定行数 | 数字 + yy (如 2yy ) | 单独 yy 仅复制当前行,复制后用 p 粘贴 |
粘贴内容 | p | 粘贴到光标下方(若想粘贴到上方用 P ) |
撤销上一步操作 | u | 支持多级撤销,可连续按 u 回溯多步 |
重做撤销操作 | Ctrl + r | 恢复被误撤销的操作 |
文本搜索 | /关键词 | 按 n 跳至下一个结果,N 跳至上一个 |
全文替换 | :%s/旧内容/新内容/g | 若需确认每处替换,可在末尾加 c (如 :%s/旧/新/gc ) |
保存文件 | :w | 可搭配文件名保存为新文件(如 :w 新文件名 ) |
保存并退出 | :wq 或 :x | 二者功能一致,:x 在文件未修改时不会更新修改时间 |
强制退出(不保存) | :q! | 适用于误编辑后无需保留修改的场景 |
四、Vim 的核心优势:为何至今仍被广泛使用?
尽管市面上有众多图形化编辑器,但 Vim 仍是开发者、运维人员的常用工具,核心优势体现在以下几点:
- 轻量且普适:占用系统资源极少,即使在低配服务器或嵌入式设备上也能流畅运行;且几乎所有 Linux/Unix 系统(包括 macOS)都预装 Vim,无需额外安装即可使用。
- 远程编辑利器:无需图形界面支持,通过 SSH 连接远程服务器后,直接输入
vim 文件名
即可编辑文件,避免了“本地编辑→上传服务器”的繁琐流程,是服务器运维的核心工具之一。 - 可扩展的功能生态:通过插件可无限拓展能力,例如:
- 自动补全:插件
YouCompleteMe
支持多种语言的智能补全; - Git 集成:插件
vim-fugitive
可在 Vim 内直接执行 Git 命令; - 文件导航:插件
NERDTree
提供可视化文件树,方便切换目录。
- 自动补全:插件
- 高效的编辑体验:熟悉模式化操作后,可通过“键盘快捷键组合”完成复杂操作(如
d3w
删除3个单词、y$
复制到行尾),减少鼠标依赖,编辑效率远超传统编辑器。
Vim 的“模式切换”可能需要短暂适应,但一旦掌握,其高效性会成为长期使用的核心动力。