为什么 2026 年还值得学 Vim

当 VS Code 和 JetBrains 系列几乎一统天下的今天,为什么还要学一个上个世纪 70 年代诞生的文本编辑器?

答案很简单:Vim 的编辑模式是最高效的文本操作方式。一旦掌握,你在任何支持 Vim 模式的编辑器(VS Code、Obsidian、IntelliJ…)中都能获得数倍的编辑效率提升。

Vim

核心哲学

Vim 的设计哲学与普通编辑器截然不同:

普通编辑器:选择 → 操作
Vim:操作 → 移动

在 Vim 中,你很少使用方向键。你使用「动词 + 名词」的语法来编辑文本。

1
2
3
d2w  → 删除 (delete) 2 个单词 (word)
ci" → 修改 (change) 引号内 (inside ") 的内容
yap → 复制 (yank) 一个段落 (around paragraph)

基础入门

模式

Vim 的核心概念是模式 (Mode)

模式 进入方式 作用
Normal Esc 导航和操作命令
Insert i I a A o O 输入文本
Visual v V Ctrl+v 选择文本
Command : 执行命令

移动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
基本移动:
h → 左 j → 下 k → 上 l → 右

单词移动:
w → 下一个单词开头 b → 上一个单词开头
e → 当前/下一个单词结尾 W/B/E → 以空格为界的大词

行内移动:
0 → 行首(含空格) ^ → 行首(第一个非空字符)
$ → 行尾

文件移动:
gg → 文件开头 G → 文件末尾
5G → 跳转到第 5 行 Ctrl+d → 向下翻半页
Ctrl+u → 向上翻半页

屏幕移动:
H → 屏幕顶部 M → 屏幕中间
L → 屏幕底部 zz → 当前行居中

编辑操作

1
2
3
4
5
6
7
8
9
10
11
基础编辑:
x → 删除单个字符 r → 替换单个字符
dd → 删除当前行 yy → 复制当前行
p → 粘贴到光标后 P → 粘贴到光标前
u → 撤销 Ctrl+r → 重做
. → 重复上一次操作

组合操作:
d + 移动命令 → 删除 + 移动
c + 移动命令 → 修改 + 移动
y + 移动命令 → 复制 + 移动

进阶操作

文本对象

Vim 的「文本对象」是效率提升的关键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
iw → inside word (单词内部)
aw → a word (包含一个单词和后面空格)
i" → inside "" (双引号内部)
a" → a "" (包含双引号)
i( → inside () (括号内部)
a( → a () (包含括号)
i{ → inside {} (花括号内部)
it → inside tag (HTML 标签内部)

组合:
ciw → 修改当前单词
di" → 删除双引号内内容
yi( → 复制括号内内容
da{ → 删除花括号及内容

多光标/多位置编辑

1
2
3
4
5
6
7
8
9
多光标:
Ctrl+v + 选择多行 + I → 多行首插入
Ctrl+v + 选择多行 + A → 多行尾插入
Ctrl+v + 选择多行 + d → 删除列块

替换:
:%s/foo/bar/g → 全文替换 foo 为 bar
:%s/foo/bar/gc → 全文替换(逐个确认)
:10,20s/foo/bar/ → 第 10-20 行替换

寄存器

Vim 有多个「剪贴板」——寄存器:

1
2
3
4
5
"ayy  → 复制当前行到寄存器 a
"ap → 粘贴寄存器 a 的内容
"+y → 复制到系统剪贴板(需要 +clipboard)
"+p → 从系统剪贴板粘贴
"0p → 粘贴最近一次 yank 的内容

宏是 Vim 的「录制重放」功能:

1
2
3
4
5
6
qa       → 开始录制宏到寄存器 a
执行操作...
q → 停止录制
@a → 执行宏 a
10@a → 执行宏 a 十次
@@ → 重复上一次宏

现代 Vim 配置

基本 .vimrc / init.lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-- Neovim 配置示例 (init.lua)

-- 行号
vim.opt.number = true
vim.opt.relativenumber = true

-- 缩进
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = true

-- 搜索
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.hlsearch = false
vim.opt.incsearch = true

-- 外观
vim.opt.termguicolors = true
vim.opt.cursorline = true
vim.opt.signcolumn = "yes"

推荐插件

插件 用途 必装
lazy.nvim 插件管理器
telescope.nvim 模糊查找
nvim-treesitter 语法高亮
nvim-lspconfig LSP 客户端
nvim-cmp 自动补全
gitsigns.nvim Git 集成
which-key.nvim 快捷键提示 推荐
harpoon 文件快速跳转 推荐
undotree 撤销历史可视化 可选

Vim 学习路线图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
第 1 周:生存模式
├─ 学会 hjkl 移动
├─ i / Esc / :wq
└─ 目标是不要被卡住无法退出

第 2 周:基本熟练
├─ w / b / e 单词移动
├─ dd / yy / p 行操作
├─ u / Ctrl+r 撤销重做
└─ / 搜索

第 3 周:开始加速
├─ 文本对象 (iw, i", i()
├─ ciw / di" 组合操作
├─ f / t 字符搜索
└─ % 括号跳转

第 4 周:真正理解 Vim
├─ 宏录制
├─ 寄存器
├─ :s 替换
└─ 开始自定义配置

在 VS Code 中使用 Vim 模式

如果你还没准备好完全切换到 Vim,可以先在 VS Code 中安装 Vim 插件体验:

  1. 安装 VSCodeVim 扩展
  2. 保留 VS Code 的图形界面优势
  3. 逐步学习 Vim 的编辑模式
  4. 当感觉编辑速度明显提升时,再切换到原版 Vim/Neovim

结语

入坑 Vim 最难的永远是第一周——你什么都干不了,编辑速度连记事本都不如。但扛过这一周,你会发现一种全新的文本交互方式。

别人用鼠标拖来拖去的时候,你的光标已经在屏幕上来去自如。这,就是 Vim 的浪漫。