Vim 不只是一个“没有鼠标的编辑器”,而是一套围绕文本对象组织起来的编辑语言。这里保留基础按键和速查材料,但重点不是背完快捷键,而是理解 Vim 为什么能把移动、选择、修改和重复组合成稳定动作。
1. 先理解 Vim 的工作方式
Vim 的学习成本主要来自两个地方:它把“移动”和“输入”拆成不同模式,也把一次编辑拆成“动作 + 范围 + 对象”。一旦接受这个模型,很多命令就不再是孤立快捷键,而像一句很短的编辑语句。
对工程工作来说,Vim 的价值不在于替代所有 IDE,而在于三个场景:远程服务器上的快速编辑、终端里的低摩擦修改、以及训练自己用结构化方式思考文本操作。Agent、CI 和远程开发越来越常见以后,能在纯文本环境里稳定完成修改,仍然是很实际的能力。
2. 移动与定位
运动图
▼/▶ 光标 ▽/▷ 目标左右动作
╭┈┈┈┈┈┈┈┈┈┈┈┈┈ |
├┈┈┈┈┈┈┈┈┈┈┈┈┈ 0 $ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮
┆ ╭┈┈┈┈┈┈┈┈┈┈ ^ fe ┈┈┈┈┈┈┈┈╮ ┆
┆ ┆ ╭┈┈┈┈┈┈┈ Fo te ┈┈┈┈┈┈┈╮┆ ┆
┆ ┆ ┆╭┈┈┈┈┈┈ To 30| ┈┈┈╮ ┆┆ ┆
┆ ┆ ┆┆ ╭┈┈┈┈ ge w ┈┈┈╮ ┆ ┆┆ ┆
┆ ┆ ┆┆ ┆ ╭┈┈ b e ┈╮ ┆ ┆ ┆┆ ┆
┆ ┆ ┆┆ ┆ ┆ ╭h l╮ ┆ ┆ ┆ ┆┆ ┆
▽ ▽ ▽▽ ▽ ▽ ▽▼ ▼▽ ▽ ▽ ▽ ▽▽ ▽
echo "A cheatsheet from quickReference"上下动作
- SCREEN 1 START
╭┈┬┈┈┈┈┈┈┈┈┈▷ #!/usr/bin/python
┆ ┆ ╭┈┈┈▷
┆ ┆ ┆ print("Hello")
┆ ┆ { } ▶ print("Vim")
┆ ┆ ┆ print("!")
┆ ┆ └┈▷
┆ ┆ ╭┈┈┈┬┈┈┈▷ print("Welcome")
G gg H M L k j ▶ print("to")
┆ ┆ └┈▷ print("Quick Reference")
┆ ┆ print("/vim")
┆ ┆
┆ ╰┈┈┈┈┈▷
┆ - SCREEN 1 END
╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈▷ print("SCREEN 2")动作
| 快捷方式 | 说明 |
|---|---|
h / j / k / l | 方向键 |
<C-u> / <C-d> | 上/下半页 |
<C-b> / <C-f> | 向上/向下翻页 |
字 (词)
| 快捷方式 | 说明 |
|---|---|
b / w | 上一个/下一个单词 |
ge / e | 上一个/下一个词尾 |
行
| 快捷方式 | 说明 |
|---|---|
0 (zero) / $ | 行的开始/结束 |
^ | 行开头 (非空白) |
字符串
| 快捷方式 | 说明 |
|---|---|
Fe / fe | 移动到上一个/下一个 e |
To / to | 在上一个/下一个 o 之前/之后移动 |
| / n| | 转到第一个/n 列 |
文档
| 快捷方式 | 说明 |
|---|---|
gg / G | 第一行/最后一行 |
:n / nG | 转到第 n 行 |
} / { | 下一个/上一个空行 |
窗口
| 快捷方式 | 说明 |
|---|---|
H / M / L | 上/中/下屏幕 |
zt / zz / zb | 上/中/下这条线 |
插入模式
| 快捷方式 | 说明 |
|---|---|
i / a | 在光标之前/之后插入 |
I / A | 插入行的开始/结束 |
o / O (letter) | 在下方/上方插入新行 |
s / S | 删除字符/行并插入 |
C / cc | 更改到/当前行的结尾 |
gi | 在最后一个插入点插入 |
Esc / <C-[> | 退出插入模式 |
保存和退出
| 快捷方式 | 说明 |
|---|---|
:w | 保存 |
:q | 关闭文件 |
:wq / :x / ZZ | 保存并退出 |
:wqa | 保存并退出所有文件 |
:q! / ZQ | 强制退出 |
:qa | 关闭所有文件 |
:qa! | 强制退出所有文件 |
:w new.txt | 写入 new.txt |
:sav new.txt | 保存并编辑 new.txt |
:w !sudo tee % | 写入只读文件 |
正常模式
| 快捷方式 | 说明 |
|---|---|
r | 替换一个字符 |
R | 进入替换模式 |
u / 3u | 撤消更改 1/3 次 |
U | 在一行上撤消更改 |
J | 加入下一行 |
<C-r> / 5 <C-r> | 重做更改 1/5 次 |
剪切和粘贴
| 快捷方式 | 说明 |
|---|---|
x | 删除字符 (剪切) |
p / P | 在之后/之前粘贴 |
xp | 交换两个字符 |
D | 删除到行尾 (剪切) |
dw | 删除单词 (剪切) |
dd | 删除线 (剪切) |
ddp | 交换两条线 |
yy | 拉线 (复制) |
"*p / "+p | 从系统剪贴板粘贴 |
"*y / "+y | 粘贴到系统剪贴板 |
在可视化模式下
| 快捷方式 | 说明 |
|---|---|
d / x | 删除选择 (剪切) |
s | 替换选择 |
y | Yank 选择 (复制) |
重复
| 快捷方式 | 说明 |
|---|---|
. | 重复上一个命令 |
; | 重复最新的 f、t、F 或 T |
, | 重复最新的 f、t、F 或 T 颠倒 |
& | 重复最后一个 :s |
@: | 重复命令行命令 |
可视化模式
| 快捷方式 | 说明 |
|---|---|
v | 进入可视化模式 |
V | 进入视线模式 |
<C-v> | 进入可视化阻挡模式 |
ggVG | 选择所有文本 |
> / < | 向右/向左移动文本 |
3. 理解 Vim 的编辑语法
动词理解
d # 表示删除delete
r # 表示替换replace
c # 表示修改change
y # 表示复制yank
v # 表示选取visual select动词代表我们打算对文本做什么。先想动作,再想范围,比单纯记快捷键更稳。
名词理解
w # 表示一个单词word
s # 表示一个句子sentence
p # 表示一个段落paragraph
t # 表示一个 HTML 标签tag名词代表即将处理的文本对象。引号、括号、段落、句子都可以成为对象;这也是 Vim 比普通快捷键系统更像“语言”的地方。
介词理解
i # 表示在...之内 inside
a # 表示环绕... around
t # 表示到...位置前 to
f # 表示到...位置上 forward介词界定待编辑文本的范围或者位置。i 和 a 的区别尤其重要:一个偏内部内容,一个连同边界一起处理。
数词理解
数词指定了待编辑文本对象的数量,从这个角度而言,数词也可以看作是一种介词。引入数词之后,文本编辑命令的语法就升级成了下面这样:
动词 介词/数词 名词下面是几个例子:
c3w # 修改三个单词:change three words
d2w # 删除两个单词:delete two words另外,数词也可以修饰动词,表示将操作执行 n 次。于是,我们又有了下面的语法:
数词 动词 名词示例
2dw # 两次删除单词(等价于删除两个单词): twice delete word
3x # 三次删除字符(等价于删除三个字符): three times delete character组词为句
有了这些基本元素,就可以构造简单命令。文本编辑命令的基本语法如下:
动词 介词 名词下面是一些例子
dip # 删除一个段落: delete inside paragraph
vis # 选取一个句子: visual select inside sentence
ciw # 修改一个单词: change inside word
caw # 修改一个单词: change around word
dtx # 删除文本直到字符"x"(不包括字符"x"): delete to x
dfx # 删除文本直到字符"x"(包括字符"x"): delete forward x4. 使用原则
Vim 的基础不需要一次学完。真正值得先掌握的是能让自己不慌的最小闭环:进入插入模式、回到正常模式、移动、保存、退出、撤销、复制、删除、粘贴。
先用语言理解命令:ciw 不是三个随机按键,而是 change inside word。dip 是 delete inside paragraph。能读懂这种结构,比记住更多命令更重要。
先学可逆操作:u、<C-r>、:w、:q! 让你敢于试错。不会退出 Vim 只是笑话;不知道如何撤销和放弃修改,才是真的风险。
把 Vim 当远程环境底座:本地可以用更完整的 IDE,但 SSH 进服务器、容器或临时机器时,Vim/Neovim 往往是最稳的编辑入口。
别急着插件化:基础动作不熟时,插件只会增加复杂度。先让移动、文本对象和重复命令进入肌肉记忆,再考虑配置管理和高级功能。
下一步
完成入门后,建议按以下路径继续学习:
另见
- 搞得像 IDE 一样的 Vim (github.io)
- Vim 官方网站 (vim.org)
- Devhints (devhints.io)
- Vim cheatsheet (vim.rotrr.com)
- Vim documentation (vimdoc.sourceforge.net)
- Interactive Vim tutorial (openvim.com)
- Vim 中文文档计划 (vimcdoc) — 在线阅读:https://yianwillis.github.io/vimcdoc/,下载:PDF / tar.gz / Win32 安装程序
来源:Vim 备忘清单 & vim cheatsheet & Quick Reference;仅学术引用,著作权归作者所有。