Neovim
Neovim 是 Vim 的一个分支,旨在改进代码库,使 API 的实现更简单,提升用户体验和插件实现。Neovim 启发了像 Helix 这样的编辑器。
安装
安装 neovim 软件包,或者安装 neovim-gitAUR 获取最新的开发版本,该版本强烈建议使用 Lua 作为其主要配置语言。为了使系统剪贴板在 Neovim 中正常工作,您可能需要安装 xclip (X11) 或 wl-clipboard (Wayland)。
:help provider-clipboard。您也可以安装许多 GUI 和其他相关项目中的一个
- FVim — 一个跨平台的 Neovim 前端 UI,使用 F# + Avalonia 构建。
- Neoray — 一个使用 GLFW 和 OpenGL 绑定编写的 Go GUI。
- Neovide — 一个简单的 Neovim Rust GUI。
- neovim-gtk — 一个使用 gtk-rs 绑定用 rust 编写的 neovim GTK UI。
- Neovim Qt — 一个用 C++ 和 Qt 编写的轻量级跨平台 Neovim GUI。
- Uivonim — Veonim 的一个非活跃分支,是一个“基于 Neovim 和 VSCode 扩展构建的简单模态 IDE”,使用 Electron 编写,具备 WebGL GPU 渲染和多线程功能。
配置
Nvim 将配置、数据和日志存储在符合 XDG Base Directory 规范的标准位置。鼓励插件遵循此约定,但并非强制要求。
Nvim 的用户级配置文件名为 init.lua 或 init.vim。两者只能使用其中一个,且必须位于 $XDG_CONFIG_HOME/nvim/ 目录中。有关在 Nvim 中使用 Lua 的介绍,请参阅 Lua 指南。当系统级配置文件不存在时,Nvim 会检查 /usr/share/nvim/sysinit.vim,该文件不建议用户编辑。[1] 默认情况下,前者(全局配置文件)不存在。如果您创建了前者,且仍希望拥有后者提供的功能(即允许通过 pacman 安装的 vim 软件包与 Nvim 协同工作),您可能希望在前者中 source 后者。
Nvim 与大多数 Vim 选项兼容。特定于 Nvim 的选项可以在 Nvim 的文档中找到,可通过在线文档或在 Nvim 中运行 :help options 查看。
从 Vim 迁移
如果您希望将现有的 Vim 配置迁移到 Nvim,只需将 ~/.vimrc 复制到 ~/.config/nvim/init.vim。如果适用,将 ~/.vim/autoload/ 的内容复制到 ~/.local/share/nvim/site/autoload/。
Vim 与 Nvim 的共享配置
Neovim 使用 $XDG_CONFIG_HOME/nvim 而非 ~/.vim 作为其主配置目录,使用 $XDG_CONFIG_HOME/nvim/init.vim 而非 ~/.vimrc 作为其主配置文件。
如果您希望继续使用 Vim 并在 Nvim 中 source 现有的 Vim 配置,请参阅 nvim-from-vim 或执行 neovim 命令 :help nvim-from-vim。
加载插件
从官方仓库或 AUR 安装的 Vim/Nvim 插件会自动由 /etc/xdg/nvim/sysinit.vim 加载,因此无需采取额外步骤。在这两个地方可以找到大量插件,但最推荐的添加插件方式是使用插件管理器,最常用的是适用于 Vim 和 Nvim 的 vim-plugAUR,以及仅适用于 Nvim 且用 Lua 编写的 lazy.nvim。两者都允许灵活的配置,范围涵盖从 github 分支到运行时命令。
大多数为 vim 编写的插件在 Nvim 上无需过多努力即可运行,但并非所有为 Nvim 编写的插件都能在 Vim 上运行,因此如果您打算确保配置的兼容性,请坚持使用传统的 init.vim 或 .vimrc
技巧与提示
用 neovim 替换 vi 和 vim
在大多数情况下,设置 $VISUAL 和 $EDITOR 环境变量 应该就足够了。
某些应用程序可能会将 vi 或 vim 硬编码为默认编辑器;为了在这些地方使用 neovim,请安装 neovim-symlinksAUR。
将 init.vim 符号链接到 .vimrc
由于 neovim 与标准 vim 大部分兼容,您可以将 nvim/init.vim 符号链接到旧的 .vimrc 以保留旧的配置选项
$ ln -s ~/.vimrc ~/.config/nvim/init.vim
如果您希望某些行针对每个版本而有所不同,可以使用 if 块
.vimrc
if has('nvim')
" Neovim specific commands
else
" Standard vim specific commands
endif
真彩色支持
这个项目的 READMEs 解释了如何为您的语法高亮添加 24 位“真彩色”支持,以及如何使用颜色选择器实时查看效果。该项目附带了作者(如果已安装)为 C++ 编写的语法高亮。
光标上次位置支持
如果您希望保存光标的最后位置,lastplace.lua 非常有用。只需将其放置在 ~/.config/nvim/plugin/ 或系统级目录 /usr/share/nvim/runtime/plugin/ 中即可。
语言服务器协议
Neovim 包含一个内置的 语言服务器协议 (LSP) 客户端,而 nvim-lspconfig 插件为其提供了常用配置。
请参阅 Language Server Protocol 以获取 Arch 软件包列表。
用作分页器 (pager)
您可以使用 :Man 命令打开帮助手册页。要使用 neovim 打开所有手册页,请将 MANPAGER 环境变量 设置为 nvim +Man!。
对于其他分页器支持,请安装 nvimpagerAUR 或 nvimpager-gitAUR 软件包,并将 PAGER 环境变量 设置为 nvimpager。
您还可以尝试 page,其软件包为 page-gitAUR。
多个隔离的 nvim 配置
可以使用 NVIM_APPNAME 环境变量并排安装几种不同的 nvim “风味 (flavors)”。在您的 XDG_CONFIG_HOME 中创建一个目录,例如 ~/.config/foo,并将新的 nvim 配置放入其中。
使用指定配置运行 nvim
- 直接在 shell 或配置文件中设置
NVIM_APPNAME变量,例如使用export NVIM_APPNAME=foo。现在nvim命令将自动调用 foo 风味。要恢复默认行为,请使用unset NVIM_APPNAME取消设置该环境变量。 - 定义一个别名,例如
alias v=' NVIM_APPNAME=foo nvim'
在原生 nvim 配置旁安装 LazyVim
如果您想在原生 nvim 配置旁安装流行的 LazyVim 风味,请遵循安装指南。但请记住,您不需要删除或移动实际 nvim 配置的以下目录:~/.config/nvim, ~/.local/share/nvim, ~/.local/state/nvim 和 ~/.cache/nvim。
因此,将启动仓库克隆到您 .config 路径中自选的目录名下。下面的命令使用 nvimLazyvim 作为目标目录
$ git clone https://github.com/LazyVim/starter ~/.config/nvimLazyvim
不要忘记删除 .git 目录
$ rm -rf ~/.config/nvimLazyvim/.git
使用以下命令调用新的风味
$ NVIM_APPNAME=nvimLazyvim nvim
可以通过在您的 shell 启动文件中追加以下行来创建别名以简化输入
alias v=' NVIM_APPNAME=nvimLazyvim nvim'
故障排除
退出后光标未恢复到之前的状态
如果退出 neovim 后光标仍然闪烁,请参阅 neovim FAQ 中的解决方案。
系统升级后 Tree-sitter 解析器错误
更新系统后,建议同步 neovim 的软件包,例如执行 :Lazy sync,然后通过 :TSUpdate 手动强制更新解析器。删除 ~/.local/share/nvim 中的 neovim 缓存文件可能会解决问题。
找不到 Tree-sitter 可执行文件
tree-sitter 软件包仅提供库文件。如果需要 tree-sitter 可执行文件,请安装 tree-sitter-cli。