Vim 与 Neovim:从 vi 到现代编辑器
这是整套教程的前言。它先帮你建立一个判断:Vim 和 Neovim 不是两套必须二选一的「快捷键软件」,而是一条延续数十年的编辑传统。了解这段历史与社区传承后,再从 00 章开始练习共同的模式、动作和文本对象。
从 vi 开始
1976 年,Bill Joy 在 Unix 上开发了 vi。它把输入文字与发出编辑命令分开:在 Normal 模式中,d 表示删除、w 表示移动到下一个单词;组合成 dw 就是“删除一个单词”。这种“操作符 + 动作”的组合方式,让常用编辑操作无需离开主键区,后来成为 Vim 系列最重要的使用习惯。
1991 年,Bram Moolenaar 发布 Vim(Vi IMproved)。它在兼容 vi 的基础上加入了多窗口、语法高亮、脚本与插件等能力,并长期被许多 Unix-like 系统作为可用的 vi 实现。Bram 于 2023 年去世后,Vim 仍由社区维护;Vim 9.1 发行说明也明确将该版本献给这位持续领导项目三十多年的作者。
Vim 的生命力,来自 Bram Moolenaar 三十余年的持续投入,也来自后来无数维护者与使用者的共同传承。感谢他留下的不只是一个编辑器,更是一种让人专注于文字与思考的工作方式。
Neovim 为什么出现
Neovim 于 2014 年从 Vim 分叉。它不是重新发明编辑方式,而是在尽可能保持 Vim 编辑体验和 Vimscript 兼容性的同时,重新整理内部架构,让异步任务、外部界面和扩展开发更容易进行。
因此,Vim 与 Neovim 共享模式切换、常用 Motion、Operator 和 Text Object 等核心编辑语义。Neovim 官方也将自己定义为 Vim 的 fork,而不是 clone;除 Vim9script 外,它尽量保持对 Vim 编辑与 Vimscript 特性的兼容。IDE Vim Mode 的实现范围各不相同,不能据此直接推断它们完整兼容。
今天如何看待它们
Vim 并没有停止发展。Vim 9.2 已于 2026 年 2 月发布,继续改进 Vim9 script、Diff、补全、Wayland 和 XDG Base Directory 支持。它仍是一个活跃、跨平台且适合远程服务器和轻量环境的编辑器。
Neovim 则更强调可扩展性与现代开发体验:
- 内置 Lua 运行时与 API,适合用
init.lua配置和开发插件。 - 内置 LSP 客户端;连接语言服务器后,可获得跳转定义、重命名、诊断、补全等能力。语言服务器本身仍需要另行安装。
- 提供 Tree-sitter 集成、异步任务、终端模拟器和 MessagePack-RPC API,便于插件、图形界面和其他程序与编辑器协作。
这不代表 Neovim 天然更适合每个人。若你在服务器上希望零配置打开文件,或要遵循既有的 Vim 配置与运维习惯,Vim 往往更直接;若你愿意维护 Lua 配置,并希望把终端编辑器逐步扩展为开发环境,Neovim 通常是更顺手的起点。
未来:共同的核心,不同的重点
两者都在延续 modal editing 的核心价值,所以今天学习的 d、c、y、f、/ 和文本对象,不会因项目演进而失效。
Vim 的公开开发列表持续记录补丁和后续版本的修复与改进。Neovim 则公开维护路线图:0.12 已包含内置插件管理器等改进;0.13 方向被命名为 “The year of Batteries Included”,当前列出文件变化检测、Image API、目录浏览器、远程工作流和为 1.0 做准备等项目。路线图中的未完成条目会随优先级调整,不能视作发布日期或功能承诺。
对学习者而言,最可靠的策略是:先用 Vim 的共同语言建立肌肉记忆;然后在实际工作中选择 Vim、Neovim,或 VS Code、JetBrains、Obsidian 的 Vim 模式。工具可以迁移,编辑思维会留下来。
选择练习环境
不必先在 Vim、Neovim 与编辑器 Vim Mode 之间做一次永久选择:
- Vim 适合希望在终端、服务器或已有 Vim 环境中直接编辑的用户。
- Neovim 适合希望逐步扩展终端开发环境的用户。
- 编辑器 Vim Mode 适合保留 VS Code、JetBrains、Zed 或 Obsidian 工作流,同时练习核心编辑语言的用户。
不要假设每个 Vim Mode 都完整实现原生 Vim。保存、关闭、文件标签和窗口布局可能由宿主应用控制;系统剪贴板与 Register 的映射受应用配置影响;Macro、Mark、Jump List、Buffer、Window 与 Tab Page 的支持程度也可能不同。图形应用中的 Ctrl-v 还可能被系统粘贴快捷键占用。
截至 2026-08-23,本教程只对本地干净配置的 Vim 9.2 与 Neovim 0.12 做了 MVP 命令核验。表中 ✓ 表示已核验,待 表示尚未逐项核验,不代表不支持:
| 能力 | Vim | Neovim | IdeaVim | VSCodeVim | Zed Vim Mode |
|---|---|---|---|---|---|
| Mode 与基础 Motion | ✓ | ✓ | 待 | 待 | 待 |
| Operator + Motion | ✓ | ✓ | 待 | 待 | 待 |
| 基础 Text Object | ✓ | ✓ | 待 | 待 | 待 |
Count 与 . | ✓ | ✓ | 待 | 待 | 待 |
| Register 与 Put | ✓ | ✓ | 待 | 待 | 待 |
教程以 Vim / Neovim 的基础编辑语义为基线;遇到按键冲突或功能缺失时,查看对应环境的接入说明:
接下来学什么
前言之后,从 00 Vim 起步 进入实操;完成核心课程后,可继续阅读 后续主题:Buffer、Window、Tab Page 与折叠。
参考资料
本文写于 2026-08-23。文中的版本现状与路线图以当时公开信息为准。
评论