在日常的系统管理和开发工作中,我们经常不得不面对这样的场景:需要在一个包含数千行代码的配置文件中,同时修改十几个相同的参数,或者批量删除某些带有特定标记的日志行。如果你还在使用普通的文本编辑器,一行一行地复制粘贴或手动删除,那不仅效率低下,而且容易出错。这时候,掌握 Vi/Vim 编辑器的高级技巧就显得尤为重要。
Vi 编辑器不仅仅是一个文本编辑器,它是每一位 Linux 使用者的手中利剑。虽然它的学习曲线稍微陡峭,但一旦你掌握了它的多行编辑模式,你的工作效率将会有质的飞跃。在这篇文章中,我们将作为你的向导,带你深入探索 Vi 编辑器的核心功能。特别是站在 2026 年的开发视角,我们不仅要学习经典技巧,还要探讨如何在现代 AI 辅助的工作流中,将这些“古老”的技能转化为“氛围编程”的超能力。
Linux 与 Vi 编辑器:强大的基石
在正式操作之前,让我们快速回顾一下我们所处的环境。Linux 是自由和开源软件的杰出代表。作为操作系统的内核,它管理着 CPU、内存和外设,是所有运行在其上的软件的基础。由 Linus Torvalds 于 1991 年创建以来,Linux 已经成为了互联网基础设施的支柱。无论是强大的服务器,还是我们手边的 Android 手机,亦或是嵌入式的物联网设备,Linux 无处不在。Ubuntu、Fedora、Debian、Kali Linux 等发行版各具特色,但它们都共享同一个高效的核心。
在 Linux 的世界里,Vi 编辑器(以及它的进化版 Vim)几乎是标配。由 Bill Joy 在 1976 年创建的 Vi,以其“双手不离主键盘”的设计哲学而闻名。这意味着我们可以极其快速地进行编辑操作,而不需要频繁地在键盘和鼠标之间切换。理解 Vi 的两种主要模式——命令模式和插入模式——是后续操作的基础。
实战演练一:使用可视块模式编辑多行
这是 Vi 编辑器中最令人“哇塞”的功能之一。想象一下,你有一段 SQL 语句,现在需要在每一行的前面都加上 INLINECODE384ea93a 前缀,或者需要给几行代码同时添加注释符 INLINECODE4987fc16。如果是普通的编辑器,你可能需要写正则或者手动操作,但在 Vi 中,这只需要几秒钟。
操作步骤详解:
- 进入可视块模式:将光标移动到你想开始编辑的第一行的第一个字符处。按下 INLINECODEec6a8d15。在 Vim 中底部通常会显示 INLINECODE8558d072。
- 选择目标行:使用方向键(或者 INLINECODEce587c6f 向下,INLINECODEc184d032 向上)移动光标,高亮选中所有需要修改的行。
- 进入插入模式:按下 INLINECODE501f17e8(也就是大写的 INLINECODE92a83068)。此时高亮选择可能会消失,光标跳回第一行开头,这是正常的。
- 输入文本:输入你想要插入的文本,例如
Item:。 - 应用更改:按
Esc键。稍微等待约 1 秒钟,你会发现刚才输入的文本瞬间复制到了之前选中的所有行中!
原理揭秘: INLINECODE7c42da99 告诉 Vi 在选中块的“每一行”的开头进入插入模式。Vi 记住了你的块选择范围,当你按下 INLINECODE075a4288 退回命令模式时,它会将这个编辑动作应用到整个选中区域。
实战演练二:高效删除多行 (ndd) 与 精确定位
删除是编辑过程中最高频的操作之一。
- INLINECODE44d40aaf:删除(剪切)从当前行开始的 N 行。例如 INLINECODE019bdf2c 删除当前行及下方的 4 行。
:10,20d:精确定位删除,删除第 10 行到第 20 行之间的所有内容。
在处理大文件时,我们还可以使用特殊符号定义范围:
.(点):代表当前行。$(美元符):代表文件最后一行。- INLINECODE9eeef20f (百分号):代表整个文件(INLINECODE142a8b98)。
例如,:.,$d 会删除从当前行到文件末尾的所有内容,这在处理超大日志文件时非常实用。
实战演练三:基于模式的智能删除
结合正则表达式删除行是 Vi 最强大的功能之一:
:g/[pattern]/d:删除包含“pattern”的行。:g!/[pattern]/d:删除不包含“pattern”的行。
场景 1:清理注释
命令 INLINECODE7c006a26 会删除所有以 INLINECODE45dd579f 开头的注释行。
场景 2:删除空行
命令 INLINECODE216217ae 利用正则 INLINECODE0895c86b 匹配行首行尾紧邻的情况,即空行,一键清理。
2026 前沿视角:Vi 技巧在现代 AI IDE 中的演变
你可能会问,既然我们已经有了 Cursor、Windsurf 和 GitHub Copilot 这些强大的 AI IDE,为什么还要学习这些 Vim 技巧?在我们的技术团队看来,这并不是非此即彼的选择,而是一种深度的共生关系。
Vim 与 AI 的共生关系
2026 年的开发范式我们称之为“Vibe Coding”(氛围编程)。AI 成为了我们的结对编程伙伴,但它并不能完全替代对编辑器的精细控制。当 AI 生成了一大段代码,我们需要在本地进行快速调整时,Vim 的多行编辑功能依然无可替代。
场景:AI 代码的快速修正
假设你刚让 AI 生成了一个包含 50 个接口定义的 JSON 文件,但所有字段名都是双引号,而你的内部规范要求使用单引号。你不需要把这段代码复制回 AI 对话框去修改(那样会增加上下文 token 消耗并消耗时间),而是直接在 Vi 中:
- 按
Ctrl + v进入可视块模式。 - 选中所有行。
- 按
c进入修改模式(或者使用宏进行更复杂的替换)。 - 输入单引号并按
Esc。
这种“游标即意图”的操作,在现代开发中依然是最快的。我们称之为“人机回环”,即 AI 负责生成,人类负责使用高效工具进行约束和修正。
进阶实战:企业级环境下的配置批量重构
让我们来看一个更复杂的、接近生产环境的实战案例。这不仅仅是技巧的堆砌,更是关于如何在保证安全的前提下进行大规模重构。
背景:
我们有一个包含 2000 行的 Nginx 配置文件。现在我们需要将所有旧的 INLINECODE8beaf776 路径从 INLINECODEea009c90 迁移到新的集中式日志路径 INLINECODE2e972a5c。同时,我们需要删除所有以 INLINECODE8ccdbab2 开头的临时配置。
步骤一:安全备份与宏观分析
在开始任何批量操作前,我们严格执行“不可变基础设施”的原则。在 Vi 中打开文件前,先在 Shell 层面做备份:
# 1. 创建带时间戳的备份,这是运维的铁律
cp nginx.conf nginx.conf.bak.20260521
# 2. 使用 Vim 打开文件,此时我们处于安全状态
vim nginx.conf
步骤二:使用宏进行复杂的批量重构
这是 Vi 中隐藏的王牌功能。虽然我们可以使用正则替换 :%s/old/new/g,但在处理生产环境配置时,路径可能千奇百怪,直接替换风险极高。宏允许我们进行“半自动化”操作。
- 录制:按 INLINECODEaeb4d27e 开始将操作记录到寄存器 INLINECODE2518527d 中。
- 查找:输入
/access_log跳转到下一个目标。 - 验证:查看这一行是否确实需要修改。如果是复杂的配置文件,我们可能需要跳过某些特殊的
access_log off配置。 - 编辑:
– 按 0 跳到行首。
– 按 INLINECODE3196efc8 然后按 INLINECODE1419694b 找到路径开始的斜杠。
– 按 ct 然后(输入空格)来修改直到空格之前的所有内容(修改路径)。
– 输入新路径 /data/logs/central/access.log。
- 结束:按
q停止录制。 - 执行:输入 INLINECODE17754327 重放宏。你可以继续按 INLINECODE80d34cdf 重复执行,或者输入
100@a重放 100 次。
为什么这比 AI 或正则更安全?
在使用 Agentic AI 或简单的正则时,很容易误伤相似的配置项。使用宏,我们在每一次修改前都保留了“人工确认”的机会(通过查找后的视觉确认)。这体现了 2026 年“负责任的 AI”理念——在高风险操作中,人类的监督依然不可或缺。
最佳实践与常见错误
在我们团队多年的实践中,总结出了一些使用 Vi 进行多行编辑的黄金法则:
- 误操作的后悔药:在进行大规模删除(如 INLINECODE880c7f7f 或 INLINECODEf5092196)之前,请务必确保你知道如何撤销。如果手抖删错了,立即按
u(undo) 可以挽回局面。 Vim 的无限级撤销是它的一大优势。 - 大小写很关键:在 Vi 中,INLINECODEf6282c5b(大写)和 INLINECODE13bd00e0(小写)在可视块模式下是天壤之别。前者用于块编辑,后者只是单纯在光标前插入。
- 备份习惯:在使用 INLINECODEf3b0a36a 命令进行批量删除前,建议先保存一份副本 (INLINECODE336c0316)。
总结
在这篇文章中,我们深入探讨了 Vi 编辑器的多行编辑和批量删除功能。我们从了解 Linux 和 Vi 的基础背景出发,学习了如何使用可视块模式 (INLINECODEd15cbd4b) 像魔法一样在多行开头同时插入文本。随后,我们掌握了使用 INLINECODE06b2acdd 快速删除连续行,以及使用 INLINECODEf3b4a041 语法精确控制删除范围。最后,我们解锁了结合正则表达式的 INLINECODE9b946d16 命令,让我们能够根据内容模式(如删除空行或特定注释行)来智能地清理文件。
但更重要的是,我们将这些经典技能带入了 2026 年的技术语境。我们看到了 Vi 操作模式如何与现代“氛围编程”理念互补,以及在企业级重构中如何通过宏和备份策略来确保系统的稳定性。这些技巧不仅仅是理论上的花招,它们是每一个追求高效 Linux 工作流的必备技能。多加练习,让这些命令成为你的肌肉记忆,你会发现,原来编辑文本可以如此优雅和迅速。