你一定听过这个段子:怎么退出 Vim?

这是一个在程序员圈子里流传了无数年的经典笑话。Stack Overflow 上关于"如何退出 Vim"的问题浏览量超过 260 万次。但笑归笑,如果你真的花时间学会了 Vim,你会发现一个惊人的事实——它根本不是什么古董,而是一把被你错过多年的利器。

Vim 到底是什么?

Vim,全称 Vi IMproved,是 1991 年由 Bram Moolenaar 在经典 Unix 编辑器 vi 的基础上改进而来的文本编辑器。而 vi 的历史更早,可以追溯到 1976 年。

你可能会问:都快 2026 年了,为什么还要学一个比很多人年纪都大的编辑器?

答案很简单:因为它的设计理念至今无人超越。

想象一下,你正在写代码,右手在键盘和鼠标之间来回切换几百次。选中、删除、移动光标、再选中、再删除……一天下来手腕隐隐作痛。而一个熟练的 Vim 用户,双手始终停留在键盘主行(asdf jkl;),像弹钢琴一样流畅地编辑文本,鼠标积了一层灰。

这就是 Vim 的魔力。

最重要的一件事:模式

打开 VS Code、记事本、Word,你打开就能打字。这是大多数人理解的"编辑器"。

Vim 不一样。 它把编辑文本这件事拆分成了不同的"模式"——就像手机有不同的屏幕页面一样,每种模式下按键的功能完全不同。

普通模式(Normal Mode)

这是 Vim 启动后你默认所处的模式。在这个模式下,你按下的字母键不会输入文字,而是执行命令。

  • h 向左移动光标
  • j 向下移动光标
  • k 向上移动光标
  • l 向右移动光标

没错,Vim 用 hjkl 来移动光标,而不是方向键。为什么?因为 hjkl 就在右手的主行位置,你的手指不需要移动就能导航。想象 j 是一支朝下的箭头,k 朝上,h 在最左边所以向左,l 在最右边所以向右。

在普通模式下你还可以做很多事情:删除、复制、搜索、替换……你大概会花 80% 的时间待在这个模式里。

插入模式(Insert Mode)

这才是你真正打字的地方。按 i 进入插入模式,然后就可以像普通编辑器一样输入文字了。修改完成后按 <Esc> 回到普通模式。

Vim 的哲学是:进入插入模式,完成一次修改,立刻退出。 不是一直待在插入模式下打字,而是"原子化"地编辑——每次只做一个精确的改动。

可视模式(Visual Mode)

v 进入。类似于用鼠标拖选文本,但完全用键盘完成。选中后可以对高亮的文本执行删除、复制等操作。

命令模式(Command Mode)

在普通模式下按 : 进入。这里可以输入各种命令,比如保存文件(:w)、退出(:q)、搜索替换(:%s/old/new/g)等等。

生存必备:进入和退出

既然说到了退出,那我们就先学会这个:

操作命令
打开文件vim 文件名
保存并退出:wq
不保存退出:q!
保存文件:w

记住 <Esc> 键是你的好朋友。任何时候不知道自己在什么模式了,狂按两下 <Esc> 就回到普通模式。

删除文本:不只是按退格键

在普通模式下,删除操作有非常丰富的变化:

命令作用
x删除光标所在位置的字符
dw删除从光标到下一个单词开头的内容
de删除从光标到当前单词末尾的内容
d$删除从光标到行末的内容
dd删除整行
2dd删除两行

你发现规律了吗?

Vim 的秘密:它是一门语言

这是理解 Vim 最关键的一点。Vim 的命令不是快捷键,而是一套可以自由组合的语法。

它的基本结构是:

操作符 + [数字] + 动作

就像英语一样:

  • d 是动词(delete,删除)
  • w 是名词(word,单词)
  • dw = “删除一个单词”

再加上数字修饰:

  • d2w = “删除两个单词”
  • 3dd = “删除三行”

操作符不止 d(删除)一个:

操作符含义示例
d删除(delete)dw 删除单词
c修改(change,删除并进入插入模式)cw 修改单词
y复制(yank)yw 复制单词

动作也远不止 w(单词):

动作含义
w到下一个单词开头
e到当前单词末尾
$到行末
0到行首

掌握了这个规律,你不需要死记硬背几百个命令,只需要理解几个操作符和几个动作,然后自由组合。这就是 Vim 的"可组合语法"——你学的不是快捷键,而是一门编辑文本的语言。

这就像学会了"主语 + 谓语 + 宾语"的句式之后,你可以造出无穷多个句子。

撤销和重做

手滑了?不要慌:

命令作用
u撤销上一步操作
U撤销对当前行的所有修改
Ctrl-R重做(撤销你的撤销)

粘贴和替换

删除的内容不会凭空消失,Vim 会把它存在一个寄存器里。按 p 就可以粘贴到光标后面。

如果是整行被删除了,p 会把它粘贴到当前行的下方。

替换单个字符可以用 r 加上新字符。如果想连续替换多个字符,用大写的 R 进入替换模式——在这个模式下,你输入的每个字符都会覆盖光标处的原有字符,直到按 <Esc> 退出。

搜索和替换

在文件中查找内容,输入 / 加搜索词:

操作命令
正向搜索/搜索词
反向搜索?搜索词
下一个匹配n
上一个匹配N
跳回之前的位置Ctrl-O

替换操作更加强大:

命令作用
:s/old/new替换当前行第一个匹配
:s/old/new/g替换当前行所有匹配
:#,#s/old/new/g替换指定行范围内的所有匹配
:%s/old/new/g替换整个文件的所有匹配
:%s/old/new/gc替换整个文件,每次替换前确认

跳转和定位

在大文件中快速移动是 Vim 的强项:

命令作用
Ctrl-G显示当前行号和文件状态
gg跳到文件第一行
G跳到文件最后一行
行号G跳到指定行
%跳到配对的括号

% 在调试代码时特别好用——把光标放在一个括号上按 %,就会跳到与之配对的括号上,帮你快速定位未闭合的括号。

打开新行和追加文本

命令作用
o在当前行下方打开新行并进入插入模式
O在当前行上方打开新行并进入插入模式
a在光标后面进入插入模式
A在行末进入插入模式
i在光标前面进入插入模式
I在行首进入插入模式

ia 的区别很简单:i 在光标前面插入,a 在光标后面插入。而大写的 A 直接跳到行末再插入——这在给一行末尾追加内容时非常方便,省去了先按 $ 再按 i 的两步操作。

复制(yank)和粘贴

复制的操作符是 y

命令作用
yw复制一个单词
yy复制整行
y$复制到行末
p粘贴到光标后面

也可以用可视模式(按 v)选中想要的文本,再按 y 复制,移动到目标位置按 p 粘贴。

外部命令和文件操作

Vim 里可以不离开编辑器就执行 shell 命令:

  • :!ls — 查看当前目录内容
  • :!dir — Windows 下的等效命令
  • :w 文件名 — 另存为新文件
  • :r 文件名 — 将另一个文件的内容插入到光标位置

甚至可以把外部命令的输出直接插入到文件中::r !ls 会把目录列表插入到当前光标下方。

设置选项

Vim 的很多行为可以通过 :set 命令来调整:

命令作用
:set ic搜索时忽略大小写
:set hls高亮显示所有搜索结果
:set is增量搜索(边打边搜)
:set noic关闭忽略大小写

如果只是某一次搜索想忽略大小写,可以在搜索词后面加 \c/hello\c

帮助系统

Vim 自带了极其详尽的帮助文档。输入 :help 或按 <F1> 即可打开。你还可以查找特定主题:

  • :help w — 查看关于 w 命令的帮助
  • :help user-manual — 打开用户手册
  • :help vimrc-intro — 了解配置文件

在命令行中输入时,Ctrl-D 可以列出所有可能的补全,Tab 键可以自动补全命令。这两个快捷键在 :help 后面也非常好用。

个性化配置

Vim 的强大在于它的可定制性。通过创建一个配置文件(Unix 下是 ~/.vimrc,Windows 下是 ~/_vimrc),你可以把所有喜欢的设置保存下来,每次启动 Vim 时自动生效。

最简单的起步方式是使用 Vim 自带的示例配置:

:edit ~/.vimrc
:r $VIMRUNTIME/vimrc_example.vim
:w

这会给你一个包含语法高亮等基础功能的配置。之后你可以根据自己的需要慢慢添加更多设置。

学习路线建议

如果你读到这里已经跃跃欲试,这里有一条亲测有效的学习路线:

第一步:完成 vimtutor。 在终端输入 vimtutor 就能启动一个交互式教程,大约 30 分钟。就是本文的主要内容来源。别光读,跟着练。

第二步:坚持使用一周。 把你日常的文本编辑任务都用 Vim 完成。前几天会很痛苦,手指不听使唤,工作效率断崖式下降。但这就像学骑自行车——摔几天之后,突然就通了。

第三步:了解可组合语法的威力。 当你意识到 d + i + " = 删除引号内的内容(di"),c + a + p = 修改一个段落(cap)时,你就入门了。你不再是记忆命令,而是在"说"Vim 这门语言。

第四步:按需扩展。 不要一上来就装几十个插件。从最少的配置开始,遇到痛点再加对应的解决方案。这样你才能真正理解每个设置的作用。

最后说几句

Vim 的学习曲线确实陡峭,这一点没必要美化。前两天的体验可能会让你想砸键盘。但一旦跨过那个坎,你会发现自己编辑文本的方式发生了质变——手指不需要离开主行,鼠标变得多余,编辑速度和思维速度同步。

更重要的是,Vim 的命令体系在过去 30 年里几乎没有变化。你今天学的每一个命令,在 2030 年、2040 年照样管用。在这个技术半年一变的时代,一个能陪伴你整个职业生涯的工具,值得你投入几天的时间。

打开终端,输入 vimtutor,开始吧。


参考资料: