Linux 基础操作:vi/vim 文本编辑器核心用法全解析(跨发行版适配)
vi/vim 是 Linux/macOS 系统中默认预装、功能强大、无图形依赖的文本编辑器,贯穿日常文件编辑、配置修改、脚本编写、日志查看等所有场景,是技术人员必备的核心工具。本文将聚焦 vi/vim 的三大模式切换、基础编辑、保存退出、查找替换核心功能,明确红帽(RHEL)、CentOS、EulerOS、Ubuntu、Debian 及 macOS 的适配要点,打造跨平台通用的 vi/vim 入门指南,助力新手快速上手、高效使用。
一、vi/vim 基础认知与发行版适配
1. vi 与 vim 的关系
- vi:原始文本编辑器,所有 Linux/macOS 系统默认预装,功能基础但稳定;
- vim:vi 的增强版(Vi Improved),兼容 vi 所有操作,新增语法高亮、代码补全、多级撤销、查找替换增强等功能,是当前主流使用的版本;
- 命令调用:vi 文件名 与 vim 文件名 均可启动,现代系统中 vi 通常是 vim 的软链接(执行 vi 实际启动 vim),功能完全一致。
2. 发行版适配总览
✅ 预装情况:
- 红帽(RHEL)、CentOS 7+/8+/Stream、EulerOS:默认预装 vim-minimal(基础版),如需完整功能可安装 vim-enhanced(sudo dnf install vim-enhanced);
- Ubuntu 16.04+、Debian 9+:默认预装完整版 vim,开箱即用;
- macOS:默认预装 vi,vim 需手动安装(brew install vim,Homebrew 工具),安装后功能与 Linux 完全一致。
✅ 核心功能一致性:
- 三大模式切换、基础编辑、保存退出、查找替换等核心操作,所有发行版完全一致,无任何差异;
- 仅 macOS 原生 vi 无语法高亮,安装 vim 后可开启(默认自动开启),不影响核心使用。
二、vim 核心:三大模式切换(入门关键)
vim 的核心逻辑是模式化操作,不同模式对应不同功能,切换流畅是高效使用的前提,三大核心模式如下:
1. 三大模式定义与功能
| 命令模式(Normal Mode) | 光标移动、复制粘贴、删除、查找、模式切换、保存退出(核心控制模式) | 启动 vim 后默认进入;其他模式按 Esc 键返回 | 按 i/a/o 等键进入插入模式;按 : 进入末行模式 |
| 插入模式(Insert Mode) | 文本输入、编辑、修改(实际打字的模式) | 命令模式下按 i/a/o/I/A/O 键 | 按 Esc 键返回命令模式 |
| 末行模式(Command-Line Mode) | 保存文件、退出编辑器、查找替换、全局操作(命令输入模式) | 命令模式下按 :(冒号)键 | 执行命令后自动返回命令模式;按 Esc 键取消命令输入 |
2. 模式切换实战示意图(必记)
启动 vim(vim 文件名) → 命令模式(默认)
↓ 按 i/a/o 等
插入模式(编辑文本)
↓ 按 Esc 键
命令模式
↓ 按 : 键
末行模式(输入命令,如 wq 保存退出)
↓ 执行命令(如 wq)
退出 vim
3. 模式切换常见问题
- ❌ 问题:进入插入模式后无法输入 / 删除?→ 确认已按 i 键(左下角显示 — INSERT –),未进入插入模式仅能执行命令,无法编辑;
- ❌ 问题:末行模式输入后无反应?→ 需按 Enter 键执行命令,按 Esc 可取消输入;
- ✅ 技巧:忘记当前模式时,连续按 2-3 次 Esc 键,必返回命令模式(万能重置)。
三、vim 基础操作:编辑、保存、退出(高频使用)
1. 命令模式:光标移动(编辑前必备)
命令模式下无法编辑文本,仅能移动光标、执行快捷操作,以下为高频光标移动命令(全发行版通用):
| ↑/↓/←/→ | 上下左右移动光标(基础,兼容所有键盘) | ✅ 入门必用 |
| h/j/k/l | 替代方向键(左 / 下 / 上 / 右),高效操作(程序员首选) | ✅ 进阶必记 |
| gg | 跳转到文件开头(第 1 行) | ✅ 高频 |
| G | 跳转到文件末尾(最后 1 行) | ✅ 高频 |
| nG | 跳转到第 n 行(如 10G 跳转到第 10 行) | ✅ 实用 |
| ^ | 跳转到当前行开头(非空格字符) | ✅ 常用 |
| $ | 跳转到当前行末尾 | ✅ 常用 |
| w | 按单词跳跃(光标移动到下一个单词开头) | ✅ 实用 |
| b | 按单词回跳(光标移动到上一个单词开头) | ✅ 实用 |
| Ctrl + f | 向下翻 1 页(forward) | ✅ 大文件常用 |
| Ctrl + b | 向上翻 1 页(backward) | ✅ 大文件常用 |
2. 插入模式:文本编辑(核心输入模式)
命令模式下按以下键进入插入模式,开始编辑文本(左下角显示 — INSERT –):
| i | 在光标当前位置插入文本 | ✅ 最常用(默认) |
| a | 在光标后一位插入文本 | ✅ 补充输入(如光标在单词中间,向后插入) |
| o | 在光标所在行下方新建一行并插入 | ✅ 新增内容(换行输入) |
| I | 在当前行开头插入文本(无论光标位置) | ✅ 行首添加(如配置文件注释) |
| A | 在当前行末尾插入文本(无论光标位置) | ✅ 行尾补充(如日志追加) |
| O | 在光标所在行上方新建一行并插入 | ✅ 插入到上一行(如代码插队) |
插入模式编辑技巧
- 正常打字、删除(Backspace 键删除光标前字符,Delete 键删除光标后字符);
- 换行:Enter 键,缩进:Tab 键(与普通编辑器一致);
- 退出编辑:按 Esc 键返回命令模式(必记)。
3. 命令模式:快捷编辑(复制、粘贴、删除)
命令模式下无需进入插入模式,可通过快捷命令实现复制、粘贴、删除,效率更高:
| 删除 | x | 删除光标所在字符(等价于 Delete 键) |
| dd | 删除光标所在整行(高频,如删除配置项) | |
| ndd | 删除从光标行开始的 n 行(如 3dd 删除 3 行) | |
| dw | 删除光标所在位置到单词末尾的内容 | |
| 复制 | yy | 复制光标所在整行(高频) |
| nyy | 复制从光标行开始的 n 行(如 5yy 复制 5 行) | |
| yw | 复制光标所在位置到单词末尾的内容 | |
| 粘贴 | p | 将复制 / 删除的内容粘贴到光标下方(整行)或光标后(字符 / 单词) |
| P | 将复制 / 删除的内容粘贴到光标上方(整行)或光标前(字符 / 单词) | |
| 撤销 / 重做 | u | 撤销上一步操作(高频,如误删恢复) |
| Ctrl + r | 重做被撤销的操作(如撤销后反悔) |
实战示例
# 1. 编辑文件(启动 vim,默认命令模式)
vim test.txt
# 2. 命令模式下复制第 3 行到第 5 行
3G # 跳转到第 3 行
3yy # 复制 3-5 行
8G # 跳转到第 8 行
p # 粘贴到第 8 行下方
# 3. 命令模式下删除第 6 行
6G # 跳转到第 6 行
dd # 删除该行
# 4. 撤销删除操作
u # 恢复第 6 行
4. 末行模式:保存与退出(核心收尾操作)
命令模式下按 : 键进入末行模式(光标移到屏幕底部),输入以下命令后按 Enter 执行,实现保存、退出或强制操作:
| :w | 保存文件(不退出) | ✅ 最常用 | 编辑中定期保存,防止内容丢失 |
| :q | 退出 vim(文件未修改时) | ✅ 常用 | 打开文件未编辑,直接退出 |
| :wq | 保存文件并退出 | ✅ 高频 | 编辑完成后正常保存退出 |
| :q! | 强制退出(不保存修改) | ✅ 实用 | 编辑错误不想保存,强制退出 |
| :w! | 强制保存(需权限) | ❗ 特殊场景 | 普通用户编辑系统文件,用 sudo vim 打开后强制保存 |
| :w 新文件名 | 另存为新文件(不覆盖原文件) | ✅ 实用 | 复制文件内容并保存为新文件 |
保存退出常见问题
- ❌ 问题:: 输入后无法打字?→ 确认已从命令模式进入(按 Esc 重置后再按 :);
- ❌ 问题:q 退出提示 E37: No write since last change (add ! to override) → 文件已修改未保存,用 :wq 保存退出或 :q! 强制退出;
- ❌ 问题:w 保存提示 E212: Can't open file for writing → 无文件写入权限,用 sudo vim 文件名 重新打开或 :w! 强制保存(需 root 权限)。
四、vim 高效技巧:查找与替换(批量操作必备)
查找与替换是 vim 提升效率的核心功能,支持单文件精准查找、批量替换、全局匹配,适用于配置文件修改、脚本批量编辑等场景。
1. 查找功能(命令模式下执行,无需进入末行模式)
核心命令
| /关键词 | 从光标位置向下查找关键词(如 /error 查找 error) | n:跳转到下一个匹配结果;N:跳转到上一个匹配结果 |
| ?关键词 | 从光标位置向上查找关键词(如 ?warning 向上查找 warning) | n:跳转到上一个匹配结果;N:跳转到下一个匹配结果 |
| :set hlsearch | 开启查找结果高亮(默认关闭,开启后更直观) | 永久开启:编辑 ~/.vimrc 文件,添加 set hlsearch |
| :nohlsearch | 关闭查找结果高亮(查找后清理屏幕) | 快捷键:命令模式下按 Esc 两次(部分系统支持) |
查找实战示例
# 1. 打开日志文件,查找所有 error 关键字
vim /var/log/messages
# 2. 命令模式下输入 /error,按 Enter 开始向下查找
/error
# 3. 按 n 跳转到下一个 error,按 N 跳转到上一个 error
# 4. 开启高亮显示
:set hlsearch
# 5. 关闭高亮显示
:nohlsearch
2. 替换功能(末行模式下执行,需按 : 进入)
核心语法(支持模糊匹配、全局替换、确认替换)
# 基础语法:s/原内容/替换内容/[选项]
# 范围说明:默认仅替换当前行;% 表示整个文件;n,m 表示第 n 到 m 行
| :s/old/new | 替换当前行第一个 old 为 new | ✅ 常用 |
| :s/old/new/g | 替换当前行所有 old 为 new(g=global) | ✅ 高频 |
| :%s/old/new | 替换整个文件第一个 old 为 new | ❗ 慎用(避免误替换) |
| :%s/old/new/g | 替换整个文件所有 old 为 new(全局替换,高频) | ✅ 批量操作必备 |
| :%s/old/new/gc | 全局替换,替换前提示确认(c=confirm,推荐) | ✅ 安全首选 |
| :n,m s/old/new/g | 替换第 n 到 m 行所有 old 为 new(如 :3,10 s/name/user/g) | ✅ 精准替换 |
替换实战示例
# 1. 编辑脚本文件,将所有 "test" 替换为 "prod",并提示确认
vim script.sh
# 2. 末行模式下输入全局确认替换命令
:%s/test/prod/gc
# 3. 按提示操作:y=替换,n=不替换,a=替换所有,q=退出替换
3. 查找替换发行版适配说明
✅ 红帽 / CentOS/EulerOS/Ubuntu/Debian/macOS:查找替换的命令、语法、选项完全一致,无任何差异;⚠️ 注意:全局替换(:%s/old/new/g)需谨慎,建议先备份文件(cp 原文件 备份文件),或使用 gc 选项逐行确认,避免误替换关键内容。
五、各发行版 vi/vim 完整适配汇总表
| 预装情况 | 预装 vim-minimal | 预装 vim-minimal | 预装 vim-minimal | 预装完整版 vim | 预装完整版 vim | 预装 vi(无 vim) | 需手动安装(brew install vim) |
| 三大模式切换 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| 基础编辑(复制 / 粘贴 / 删除) | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 保存退出(:w/:q/:wq) | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 查找替换(/ 关键词 /:% s) | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 语法高亮 | ❌ 需安装 vim-enhanced | ❌ 需安装 vim-enhanced | ❌ 需安装 vim-enhanced | ✅ 默认开启 | ✅ 默认开启 | ❌ 无 | ✅ 默认开启 |
| 多级撤销(u/Ctrl+r) | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 仅一级撤销 | ✅ 支持 |
六、vim 入门常见问题与避坑指南
❌ 问题 1:启动 vim 后无法输入文本
→ 原因:未进入插入模式(默认命令模式);→ 解决方案:按 i 键(左下角显示 — INSERT –),即可开始输入。
❌ 问题 2:编辑完成后无法退出 vim
→ 原因:未进入末行模式或输入错误命令;→ 解决方案:按 Esc 键返回命令模式,再按 : 进入末行模式,输入 wq 保存退出或 q! 强制退出。
❌ 问题 3:查找后结果不高亮,看不清匹配项
→ 解决方案:末行模式输入 :set hlsearch 开启高亮,关闭用 :nohlsearch。
❌ 问题 4:全局替换后发现误操作,如何恢复?
→ 解决方案:① 未退出 vim 时,按 u 键撤销替换操作(多次按 u 可多级撤销);② 已退出 vim 时,依赖文件备份(替换前建议 cp 原文件 原文件.bak)。
❌ 问题 5:macOS 原生 vi 无语法高亮,编辑代码不便
→ 解决方案:安装 Homebrew(/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"),再安装 vim(brew install vim),启动用 vim 文件名,默认开启语法高亮。
七、vim 入门必备快捷键总结(高效必记)
| 命令模式 | i/a/o | 进入插入模式 |
| 命令模式 | Esc | 返回命令模式(万能重置) |
| 命令模式 | gg/G | 跳转到文件开头 / 末尾 |
| 命令模式 | dd/yy/p | 删除整行 / 复制整行 / 粘贴 |
| 命令模式 | u/Ctrl + r | 撤销 / 重做 |
| 命令模式 | /关键词/?关键词 | 向下 / 向上查找 |
| 命令模式 | n/N | 查找下一个 / 上一个匹配项 |
| 末行模式 | :w/:q/:wq/:q! | 保存 / 退出 / 保存退出 / 强制退出 |
| 末行模式 | :%s/old/new/gc | 全局替换并确认 |
总结
vi/vim 的核心是模式化操作,掌握 “命令模式→插入模式→末行模式” 的切换逻辑,再熟练保存退出、基础编辑、查找替换等核心功能,即可应对 90% 以上的文本编辑场景。红帽、CentOS、EulerOS、Ubuntu、Debian 五大 Linux 发行版的 vi/vim 用法完全一致,仅需注意部分系统需安装完整版 vim 以开启语法高亮;macOS 原生 vi 功能基础,安装 vim 后可实现与 Linux 完全一致的体验。







