作为一名在这个行业摸爬滚打多年的开发者,我们深知终端不仅是工具,更是通往系统内核的桥梁。即使到了 2026 年,即使 AI 编程助手如 Cursor 和 GitHub Copilot 已经无处不在,Vi 和 Vim 编辑器依然像是我们手中的瑞士军刀,强大、不可替代且无处不在。但不可否认的是,对于初学者来说,如何退出并保存文件往往是遇到的第一道“拦门虎”。你也许听过这个著名的程序员笑话:“如何生成随机字符串?让新手退出 Vim 就行。”
在这篇文章中,我们将一起深入探讨 Vi 和 Vim 的使用奥秘。我们不仅会介绍基础的保存与退出,还会理解其背后的设计哲学,并结合 2026 年的 AI 辅助开发工作流,探讨如何在现代开发环境中利用 Vim 的原生能力来弥补 AI 工具的不足。让我们开始这段探索之旅吧。
目录
为什么我们需要掌握 Vi / Vim?
在深入具体的保存命令之前,让我们先了解一下背景。Linux 是大多数服务器、容器和云端环境的核心操作系统。在这些系统中,Vi 编辑器(及其改进版 Vim)几乎是默认安装的唯一保障。掌握它,意味着你拥有了一种在任何 Linux 环境下都能进行文本编辑的通用能力。
但在 2026 年,我们学习 Vim 还有一个新的理由:极致的掌控力。当我们使用 AI IDE 时,有时网络会延迟,有时 AI 会产生幻觉。而在通过 SSH 连接到远程生产环境服务器进行故障排查时,Vim 往往是你唯一可以依赖的工具。想象一下,当 Kubernetes 集群出现故障,而你只能通过一个低带宽的终端连接时,Vim 就是你救火的最后一道防线。
什么是 Vi 和 Vim 编辑器?
Vi 编辑器最初由 Bill Joy 于 1976 年开发,以高效和灵活性著称。到了 1991 年,Vim(Vi IMproved)发布,它兼容 Vi 的所有命令,并增加了许多新特性。
Vi 的两种核心模式
理解“模态编辑”是掌握保存和退出的关键。这与现代所见即所得的编辑器截然不同。
- 命令模式:这是 Vi 启动后的默认模式。在这个模式下,键盘输入的每一个字符都被视为一个命令。这也是我们执行保存(INLINECODEf0c5245d)和退出(INLINECODEb1a744eb)操作必须处于的模式。
- 插入模式:这才是我们习惯的“打字”模式。在此模式下,你可以像在普通编辑器中一样输入字符。你可以通过按 INLINECODEda6db3c8 进入此模式。通常,编辑器的底部会显示 INLINECODEf75c7c77 字样。
重要提示:无论何时,如果你不确定自己当前处于什么模式,请尝试连续按几次 Esc 键。这会让你安全地回到命令模式。
场景一:如何在 Vi / Vim 中保存文件?
编写代码或配置文件时,养成频繁保存的习惯是至关重要的。我们可以使用几种不同的命令来实现保存。
1. 保存但不退出 (:w)
这是最基础的保存命令。INLINECODEd2b43606 实际上是 INLINECODEb0dc7bfb 的缩写。
操作步骤:
- 确保你处于命令模式(按
Esc)。 - 输入
:w。 - 按下
Enter键。
执行示例:
假设我们正在编辑一个 Python 脚本。
# 在终端中打开文件
$ vi script.py
# ... 进行了一些编辑 ...
# 保存操作
:w
# 输出信息:"script.py" 3L, 52C written
2. 另存为新文件 (:w filename)
我们可以基于当前的配置文件创建一个备份。
操作步骤:
- 按
Esc进入命令模式。 - 输入
:w new_filename.txt。 - 按下
Enter。
实际应用场景: 你正在修改复杂的 Nginx 配置,在尝试新的改动前,使用 :w nginx.conf.backup 保存一份副本是极其明智的做法。
3. 保存所有打开的文件 (:wa)
Vim 的强大功能之一是支持分屏和标签页。如果你打开了 3 个不同的文件并都进行了修改,不想一个个切换去保存,可以使用 :wa(write all)。
场景二:如何退出 Vi / Vim 编辑器?
1. 正常退出 (:q)
如果你打开文件只是查看了一下,或者你之前已经保存过了,现在仅仅是想关闭编辑器,那么可以使用 :q(quit)。
注意事项: 如果你修改了文件但尚未保存,Vim 会拒绝退出并提示你更改尚未保存。
2. 强制退出且不保存 (:q!)
这是新手最喜欢的命令,通常被称为“我不干了!”模式。当你把文件改得一团糟,或者你想放弃当前的修改时,这个命令非常有用。
操作步骤:
- 按
Esc。 - 输入
:q!。 - 按
Enter。
3. 快捷键退出 (ZQ)
除了冒号命令,Vim 还提供了一些不需要按冒号的快捷操作。INLINECODEcf313006(即大写的 ZZ)通常用于保存并退出,而 INLINECODE9329e379 则等同于 :q!。
场景三:保存并退出(最常用的组合)
在日常开发中,我们最常用的操作往往是完成工作后直接保存并离开。
1. 命令组合 (:wq)
这是 INLINECODEc64494a4 和 INLINECODE27982a7e 的组合体。
2. 快捷键大法 (ZZ)
注意,这里是两个大写字母 Z(Shift+z)。如果你处于命令模式下,直接快速敲击两次大写 Z,效果等同于 :wq。
实战演练:从创建到保存的完整流程
为了巩固我们的学习,让我们通过一个具体的例子来走一遍完整的流程。假设我们要创建一个简单的 Shell 脚本。
步骤 1:在终端中启动 Vim 并创建新文件
vim hello.sh
步骤 2:进入插入模式并编写代码
现在我们无法输入文字,因为我们处于命令模式。按下 INLINECODE7d32dfa0 键,屏幕底部会出现 INLINECODEf81ca1fd 字样。现在,输入以下内容:
#!/bin/bash
echo "Hello, Vim World!"
# 这是一个测试脚本
date
步骤 3:保存文件
编写完毕后,我们需要保存。首先按 INLINECODEfe8f1d7b 退出插入模式。然后输入 INLINECODEfcb4aca7 并按下回车。
步骤 4:赋予执行权限并测试
虽然我们主要讲保存,但这里有一个实用的技巧。你可以不退出 Vim 直接执行命令保存后的文件。在命令模式下输入:
“INLINECODEe635da59`INLINECODE00bf9659:wINLINECODEe445def8:w !sudo tee %INLINECODEf4898af8:wINLINECODEd6aa6ac1:w filenameINLINECODE96c7faeb:qINLINECODE93e82a37:q!INLINECODE30427191:wq` 保存并退出。我们还深入到了实战场景,演示了编写脚本的完整流程,并分享了处理只读文件报错的进阶技巧。
更重要的是,我们将这些经典的知识放在了 2026 年的技术背景下进行了审视。无论 AI 如何发展,掌握底层工具的原理能让我们更加从容地应对复杂的生产环境。掌握 Vim 的保存和退出命令,就像是学会骑自行车上的平衡。一旦你克服了最初的恐惧,理解了命令模式与插入模式的逻辑,你就能通过终端自由地驰骋在任何 Linux 服务器上。现在,打开你的终端,尝试创建一个文件,练习这些命令吧。熟能生巧,Vim 将会成为你手中最高效的利剑。