📚 Neovim 学习系列
阶段一:安装与入门
01 安装与入门(当前篇)
阶段二:核心操作与编辑语法
02 核心操作与编辑语法
阶段三:缓冲区/窗口/标签页
03 缓冲区/窗口/标签页
阶段四:Lua 基础与配置
04 Lua 基础与配置
阶段五至八共4篇,后续持续更新
读完本篇你将能:在 macOS 上安装 Neovim 0.12,理解 Vim 的五种编辑模式及其切换关系,完成 vimtutor 基础练习,独立创建和编辑第一个文件。
📑 本文目录
01为什么选择 Neovim
02安装 Neovim
03五种编辑模式
04vimtutor 实战
05第一个文件编辑

Neovim 安装与入门:从零开始的终端编辑器之旅

难度:入门 | Neovim 0.12 | 阅读约 15 分钟

01 为什么选择 Neovim

如果把编程比作木工,编辑器就是你的工作台。你可以用一把瑞士军刀凑合,也可以打造一张专属工作台——上面挂着你最顺手的工具,每个抽屉的位置都由你决定。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 等于学了 Vim——所有快捷键、命令、模式操作完全通用。如果你在工作中遇到只能装 Vim 的服务器,直接上手操作毫无障碍。区别只在配置层面:Neovim 用 Lua,Vim 用 VimScript。

02 安装 Neovim

了解了 Neovim 的定位,接下来把它装到你的机器上。macOS 用户通过 Homebrew 安装最简单,一行命令搞定:

Shell
brew install neovim

安装完成后,验证版本号是否为 0.12.x:

Shell
nvim --version
# 预期输出:
NVIM v0.12.2
Build type: Release
LuaJIT 2.1.1741730640
Run "nvim -V1 -v" for more information

如果你看到 NVIM v0.12.x,说明安装成功。注意启动命令是 nvim(三个字母),不是 neovim。

Linux 用户按发行版选择包管理器:

Shell
# Ubuntu / Debian
sudo apt install neovim
# Fedora
sudo dnf install neovim
# Arch Linux
sudo pacman -S neovim

安装后,创建 Neovim 的配置目录。Neovim 遵循 XDG 规范,配置文件放在 ~/.config/nvim/ 下,文件名为 init.lua(第四篇会详细讲解)。

Shell
mkdir -p ~/.config/nvim
⚠️ 常见错误
neovim — 输入完整名称"neovim"会报 command not found
✓ 正确:nvim — 命令只有三个字母,记住"n-v-i-m"

03 五种编辑模式

Neovim 是"模态编辑器"——同一个按键在不同模式下含义完全不同。比如在 Normal 模式按 d 是删除,在 Insert 模式则输入字母 d。这是初学者最需要跨越的认知门槛,但也是 Vim 效率的根基:不用按 Ctrl 组合键,单字母就能完成复杂操作。

Neovim 有五种核心模式:

Normal
→
Insert
←
Esc

Normal 是"大本营"——所有操作从这里出发,完成后回到这里。Insert 用于输入文字,Visual 用于选区操作,Command-line 执行 Ex 命令(保存、替换、设置等),Terminal 是 Neovim 特有的内嵌终端。

Normal 模式(默认)

启动 Neovim 时默认进入 Normal 模式。这是你 80% 时间停留的地方——光标移动、删除、复制、粘贴都在这里完成。记住一条铁律:完成任何操作后,按 Esc 回到 Normal 模式。

Insert 模式(文字输入)

从 Normal 进入 Insert 有六个入口键,区别在于插入位置:

按键 插入位置 记忆方法
i 光标前 insert
a 光标后 append
o 下方新开一行 open
I 行首 大写 = 行首版
A 行尾 大写 = 行尾版
O 上方新开一行 大写 = 上方版

Visual 模式(选区操作)

Visual 模式用于"先选再做"——用键盘选中一段文字,再执行删除、复制等操作。三种变体:v 字符选区、V 整行选区、Ctrl-v 列块选区(可跨行垂直选区,批量注释时非常有用)。

Command-line 模式(Ex 命令)

在 Normal 模式按 : 进入命令行模式,屏幕底部出现输入栏。这里执行保存 (:w)、退出 (:q)、替换 (:s/old/new/g) 等操作。命令以回车执行,Esc 取消。

Terminal 模式(内嵌终端)

这是 Neovim 相对 Vim 的重要增强——输入 :terminal 在编辑器内打开一个真实终端,可以运行任何 Shell 命令。从 Terminal 模式回到 Normal 模式的快捷键是 Ctrl-\\ Ctrl-n(先按 Ctrl-\\ 再按 Ctrl-n),这个组合键需要肌肉记忆。

04 vimtutor 实战

理解了模式的概念,接下来通过一个交互式教程把手指训练起来。vimtutor 是 Neovim 自带的入门教程,约 30 分钟,带你从零开始练习七组核心操作。

在终端中直接输入:

Shell
vimtutor

屏幕会打开一个练习文件,你跟着文件中的提示,在文件本身上操作。七节课的概览:

1 移动光标:用 h 左 j 下 k 上 l 右移动,养成不用方向键的习惯
2 删除与恢复:x 删字符、dd 删整行、dw 删单词、u 撤销
3 复制与粘贴:y 复制(yank)、p 粘贴(put)
4 搜索与替换:/关键词 向后搜索、:s/旧/新/g 替换
5 选区操作:v 进入 Visual 模式,选中后批量操作
6 保存与退出::w 保存、:q 退出、:wq 保存并退出
7 帮助系统::help 或 :h 打开完整文档
💡 小贴士
vimtutor 生成的练习文件是临时的,关闭后不会保存。你可以反复运行它来练习,建议至少完整做三遍——第一遍理解概念,第二遍建立手感,第三遍追求速度。

05 第一个文件编辑

理论准备就绪,现在用 Neovim 从零创建一个真实的 Python 文件,把整个流程走一遍。

第一步,在终端中用 nvim 打开(或创建)一个文件:

Shell
nvim hello.py
# hello.py 不存在则新建,存在则打开

第二步,按 i 进入 Insert 模式,左下角显示 -- INSERT --,输入以下代码:

Python
def greet(name):
    return f"Hello, {name}!"
print(greet("Neovim"))

第三步,按 Esc 回到 Normal 模式,然后输入 :wq 回车——保存并退出。

退出相关的命令组合:

命令 作用 使用场景
:wq 保存并退出 正常完成编辑
:q! 不保存强制退出 改错了,全部放弃
:w 只保存不退出 写到一半先存盘
:x 仅当有修改时保存退出 比 :wq 更精确,不改不写
⚠️ 常见错误
:q — 有未保存的修改时直接 :q 会被拒绝,提示 E37: 已修改但尚未保存
✓ 正确:用 :wq 保存退出,或用 :q! 放弃修改强制退出
✏️ 动手练习
🟢 基础验证
用 nvim 创建一个名为 notes.txt 的文件,输入三行文字(任意内容),用 :wq 保存退出。然后用 cat notes.txt 验证内容是否正确保存。
🟡 组合应用
打开刚才创建的文件,用 dd 删除第二行,用 p 粘贴到第三行下方,再用 u 撤销操作观察效果。保存退出后检查文件变化。
🔴 开放挑战
在 Neovim 中输入 :help 打开文档,浏览左侧目录找到"模式"相关章节。尝试阅读英文文档并找出一种本篇未提到的模式或子模式。提示:可以搜索 :help mode 查看所有模式列表。
📖 知识回顾
brew install neovim nvim 启动命令 五种编辑模式 Insert 六入口键 vimtutor 七课 :wq 保存退出 :q! 强制退出 Esc 回 Normal
下篇预告
02 核心操作与编辑语法:operator+motion 与文本对象
将学习 Vim 的"语法"系统——动词(operator)+ 名词(motion/text object),掌握这套语法后,所有操作组合都能举一反三