neovim 简介
neovim是基于 vim 的代码编辑器,他摒弃了 vim 的历史包袱(远古的兼容性)以及更加激进的功能集成。旨在成为一个更加现代化的 vim 编辑器。
安装
大多数发行版都可以通过包管理器来安装 neovim,但是除了 brew、AUR 等源支持最新版,而 neovim 是一个迭代非常迅速的项目因此更推荐下面两种安装方式:
Appimage
在 Linux 下如果想要使用 nightly 版本最好的方式就是使用 Appimage 程序:
Bash
sudo curl -L https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -o /usr/local/bin/nvim
sudo chmod a+x /usr/local/bin/nvim
Note
sudo 安装的 appimage 程序还需要 fuse 来允许非 root 用户挂在文件系统,此时只需要安装 fuse libfuse2 即可。或者直接下载到家目录下
neovim 启动
执行 nvim 命令就能够启动到 neovim 界面,也可以添加一些参数来控制启动行为:
Bash
nvim [options] [filename] ...
# 常见参数
--clean # 跳过文件和环境变量的初始化过程,即使用默认配置的 nvim
# 命令执行
# 可以指定多个该参数
# 如果命令包含空格需要加引号(取决于 shell)
--cmd {command} # 初始化启动时调用即在处理任何 vimrc 文件之前执行
-c {command} # 将在第一个文件被正式载入时执行,即在初始化启动完成后执行
# 服务器
--listen {addr} # 基于 TCP 远程
--embed # # RPC
整个启动额初始化流程包括:
- 设置 shell 选项: 使用环境变量 SHELL 来设置该选项,windows 下使用
$env:ComSpec
- 处理启动参数: 执行
--cmd
参数,为所有文件创建缓冲区(此时并不加载文件) - 启动服务器: 如果指定了
--listen
参数,并设置v:servername
- 作为服务器启动: 如果以
--embed
启动,则等待 UI (使用 UI 协议的客户端)连接到 nvim,用于其他应用程序嵌入 nvim 的情形 - 执行默认脚本: 执行一些默认的映射和默认命令
- 启动文件类型插件: 启动文件类型和缩进插件,等同于执行
:runtime! ftplugin.vim indent.vim
- 加载用户配置
- 启动文件类型检测: 除非用户配置中指定了
filetype off
- 启动语法高亮: 除非用户配置中指定了
syntax off
- 加载 plugin 中脚本: 即
:runtime! plugin/**/*.{vim.lua}
,注意涉及 runtimepath 的目录都会搜索 plugin 文件夹中的脚本 - 读取 shada 文件
- 完成启动: 打开所有窗口,加载所有窗口中的缓冲区,注意此时并不出发 BufAdd 命令
用户配置
可以使用用户脚本来控制 neovim 的行为。
Note
neovim 兼容了 vim 的 vimscript,并且还提供了lua 脚本的支持。
配置入口
最初 vim 的配置入口是 vimrc 文件,nvim 同样支持该文件,不过更推荐使用 lua 脚本来进行配置。最推荐的位置是:
如果存在 vimrc 文件,那么 nvim 会自动为 $MYVIMRC
环境变量赋值,因此编辑配置文件最简单的方式就是:
配置架构
neovim 推荐使用 lua 脚本来进行配置,官方推荐的配置架构如下:
Bash
~/.config/nvim
|-- lua/
| |-- options.lua # 选项集合地
| |-- plugin/ # 插件配置目录
| |-- lsp.lua # 特定插件配置
|-- init.lua # 配置文件入口
第三方配置集
Neovim 由于引入了 lua 这个完整的编程语言,在开源社区发展异常迅速。出现了众多的优秀的配置发行版,其中比较著名的包括:
- NvChad: 轻量级但是功能强大的配置集,提供了一个最小系统,可以作为自定义配置的起点(他的配置文件结构是最适合自定义配置的)
- LunarVim: 曾经最受欢迎的发行版,提供了非常多插件的集成,基本上可以看作是一个完整的 IDE 了。不过目前维护不在积极(核心的原因可能是耦合他多了,维护难度过大)
- LazyVim: 由大名鼎鼎的 lazy.nvim 插件作者维护的发行版,neovim 之所以存在大量的发行版的一大原因就是 lazy.nvim 插件管理器的出现,如果想要之后能够自己配置 neovim 推荐从该发行版开始
- AstroNvim: 同样是旨在成为 IDE 的发行版,他将一些非核心插件剥离来避免重蹈 LunarVim 的覆辙,而其他非核心插件由 lazy.nvim 来管理
Tips
如果想要从头开始就选择 NvChad,如果想自己维护插件就 LazyVim。如果想要不折腾 AstroNvim 可能好一些(但也意味着如果维护不积极就可能崩溃)