Skip to content

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

整个启动额初始化流程包括:

  1. 设置 shell 选项: 使用环境变量 SHELL 来设置该选项,windows 下使用 $env:ComSpec
  2. 处理启动参数: 执行 --cmd 参数,为所有文件创建缓冲区(此时并不加载文件)
  3. 启动服务器: 如果指定了 --listen 参数,并设置 v:servername
  4. 作为服务器启动: 如果以 --embed 启动,则等待 UI (使用 UI 协议的客户端)连接到 nvim,用于其他应用程序嵌入 nvim 的情形
  5. 执行默认脚本: 执行一些默认的映射和默认命令
  6. 启动文件类型插件: 启动文件类型和缩进插件,等同于执行 :runtime! ftplugin.vim indent.vim
  7. 加载用户配置
  8. 启动文件类型检测: 除非用户配置中指定了 filetype off
  9. 启动语法高亮: 除非用户配置中指定了 syntax off
  10. 加载 plugin 中脚本: 即 :runtime! plugin/**/*.{vim.lua},注意涉及 runtimepath 的目录都会搜索 plugin 文件夹中的脚本
  11. 读取 shada 文件
  12. 完成启动: 打开所有窗口,加载所有窗口中的缓冲区,注意此时并不出发 BufAdd 命令

用户配置

可以使用用户脚本来控制 neovim 的行为。

Note

neovim 兼容了 vim 的 vimscript,并且还提供了lua 脚本的支持

配置入口

最初 vim 的配置入口是 vimrc 文件,nvim 同样支持该文件,不过更推荐使用 lua 脚本来进行配置。最推荐的位置是:

Bash
# Linux
~/.config/nvim/init.vim|init.lua

# windows
~/AppData/Local/nvim/init.vim|init.lua

如果存在 vimrc 文件,那么 nvim 会自动为 $MYVIMRC 环境变量赋值,因此编辑配置文件最简单的方式就是:

Bash
:edit $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 可能好一些(但也意味着如果维护不积极就可能崩溃)