如果把编程比作木工,编辑器就是你的工作台。你可以用一把瑞士军刀凑合,也可以打造一张专属工作台——上面挂着你最顺手的工具,每个抽屉的位置都由你决定。Neovim 就是那张可以量身定制的工作台。
1991 年,Bram Moolenaar 基于经典的 Vi 编辑器创建了 Vim(Vi IMproved),用"模式编辑"的理念影响了整整一代程序员。2014 年,社区从 Vim 源码中分支出 Neovim,目标是清理历史包袱、引入现代架构。Neovim 不是"另一个编辑器",而是 Vim 的现代化重构——所有 Vim 的操作习惯在 Neovim 中完全通用。
核心区别在于技术架构:
| 维度 | Vim | Neovim |
|---|---|---|
| 配置语言 | VimScript | Lua(首选)+ VimScript 兼容 |
| 异步架构 | 8.0 后有限支持 | 原生异步,LSP/插件不阻塞 |
| 内置 LSP | 需插件实现 | 0.12 原生 vim.lsp.config() |
| 嵌入式终端 | 需要 :term 且体验有限 | 原生 :terminal,可分屏嵌入 |
| 插件生态 | 成熟但较老 | 更活跃,Lua 插件性能更好 |
当前稳定版 Neovim 0.12 带来了几项重要更新:原生 LSP 配置 API(无需安装 lspconfig 插件即可配置语言服务器)、内置补全选项 vim.o.autocomplete、以及 vim.net.request() 网络请求能力。
了解了 Neovim 的定位,接下来把它装到你的机器上。macOS 用户通过 Homebrew 安装最简单,一行命令搞定:
安装完成后,验证版本号是否为 0.12.x:
如果你看到 NVIM v0.12.x,说明安装成功。注意启动命令是 nvim(三个字母),不是 neovim。
Linux 用户按发行版选择包管理器:
安装后,创建 Neovim 的配置目录。Neovim 遵循 XDG 规范,配置文件放在 ~/.config/nvim/ 下,文件名为 init.lua(第四篇会详细讲解)。
nvim — 命令只有三个字母,记住"n-v-i-m"
Neovim 是"模态编辑器"——同一个按键在不同模式下含义完全不同。比如在 Normal 模式按 d 是删除,在 Insert 模式则输入字母 d。这是初学者最需要跨越的认知门槛,但也是 Vim 效率的根基:不用按 Ctrl 组合键,单字母就能完成复杂操作。
Neovim 有五种核心模式:
Normal 是"大本营"——所有操作从这里出发,完成后回到这里。Insert 用于输入文字,Visual 用于选区操作,Command-line 执行 Ex 命令(保存、替换、设置等),Terminal 是 Neovim 特有的内嵌终端。
启动 Neovim 时默认进入 Normal 模式。这是你 80% 时间停留的地方——光标移动、删除、复制、粘贴都在这里完成。记住一条铁律:完成任何操作后,按 Esc 回到 Normal 模式。
从 Normal 进入 Insert 有六个入口键,区别在于插入位置:
| 按键 | 插入位置 | 记忆方法 |
|---|---|---|
i |
光标前 | insert |
a |
光标后 | append |
o |
下方新开一行 | open |
I |
行首 | 大写 = 行首版 |
A |
行尾 | 大写 = 行尾版 |
O |
上方新开一行 | 大写 = 上方版 |
Visual 模式用于"先选再做"——用键盘选中一段文字,再执行删除、复制等操作。三种变体:v 字符选区、V 整行选区、Ctrl-v 列块选区(可跨行垂直选区,批量注释时非常有用)。
在 Normal 模式按 : 进入命令行模式,屏幕底部出现输入栏。这里执行保存 (:w)、退出 (:q)、替换 (:s/old/new/g) 等操作。命令以回车执行,Esc 取消。
这是 Neovim 相对 Vim 的重要增强——输入 :terminal 在编辑器内打开一个真实终端,可以运行任何 Shell 命令。从 Terminal 模式回到 Normal 模式的快捷键是 Ctrl-\\ Ctrl-n(先按 Ctrl-\\ 再按 Ctrl-n),这个组合键需要肌肉记忆。
理解了模式的概念,接下来通过一个交互式教程把手指训练起来。vimtutor 是 Neovim 自带的入门教程,约 30 分钟,带你从零开始练习七组核心操作。
在终端中直接输入:
屏幕会打开一个练习文件,你跟着文件中的提示,在文件本身上操作。七节课的概览:
h 左 j 下 k 上 l 右移动,养成不用方向键的习惯
x 删字符、dd 删整行、dw 删单词、u 撤销
y 复制(yank)、p 粘贴(put)
/关键词 向后搜索、:s/旧/新/g 替换
v 进入 Visual 模式,选中后批量操作
:w 保存、:q 退出、:wq 保存并退出
:help 或 :h 打开完整文档
理论准备就绪,现在用 Neovim 从零创建一个真实的 Python 文件,把整个流程走一遍。
第一步,在终端中用 nvim 打开(或创建)一个文件:
第二步,按 i 进入 Insert 模式,左下角显示 -- INSERT --,输入以下代码:
第三步,按 Esc 回到 Normal 模式,然后输入 :wq 回车——保存并退出。
退出相关的命令组合:
| 命令 | 作用 | 使用场景 |
|---|---|---|
:wq |
保存并退出 | 正常完成编辑 |
:q! |
不保存强制退出 | 改错了,全部放弃 |
:w |
只保存不退出 | 写到一半先存盘 |
:x |
仅当有修改时保存退出 | 比 :wq 更精确,不改不写 |
:wq 保存退出,或用 :q! 放弃修改强制退出
nvim 创建一个名为 notes.txt 的文件,输入三行文字(任意内容),用 :wq 保存退出。然后用 cat notes.txt 验证内容是否正确保存。dd 删除第二行,用 p 粘贴到第三行下方,再用 u 撤销操作观察效果。保存退出后检查文件变化。:help 打开文档,浏览左侧目录找到"模式"相关章节。尝试阅读英文文档并找出一种本篇未提到的模式或子模式。提示:可以搜索 :help mode 查看所有模式列表。