你一定听过这个段子:怎么退出 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 | 在行首进入插入模式 |
i 和 a 的区别很简单: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,开始吧。
参考资料: