为什么 2026 年还值得学 Vim
当 VS Code 和 JetBrains 系列几乎一统天下的今天,为什么还要学一个上个世纪 70 年代诞生的文本编辑器?
答案很简单:Vim 的编辑模式是最高效的文本操作方式。一旦掌握,你在任何支持 Vim 模式的编辑器(VS Code、Obsidian、IntelliJ…)中都能获得数倍的编辑效率提升。

核心哲学
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
|
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 插件体验:
- 安装
VSCodeVim 扩展
- 保留 VS Code 的图形界面优势
- 逐步学习 Vim 的编辑模式
- 当感觉编辑速度明显提升时,再切换到原版 Vim/Neovim
结语
入坑 Vim 最难的永远是第一周——你什么都干不了,编辑速度连记事本都不如。但扛过这一周,你会发现一种全新的文本交互方式。
别人用鼠标拖来拖去的时候,你的光标已经在屏幕上来去自如。这,就是 Vim 的浪漫。