Neovim
Neovim 是 Vim 的一个分支,旨在改进代码库,以便于实现 API,改善用户体验和插件实现。Neovim 启发了 Helix 等编辑器。
安装
安装 neovim 包,或者 neovim-gitAUR 以获取最新的开发版本,这强烈鼓励使用 Lua 作为其主要的配置语言。为了使系统剪贴板能与 Neovim 一起工作,您可能需要安装 xclip (X11) 或 wl-clipboard (Wayland)。
:help provider-clipboard neovim 命令。也可以安装 许多 GUI 和其他相关项目中的一个。
- Gnvim — 一个有主见的 Neovim GTK GUI。
- FVim — 一个跨平台的 Neovim 前端 UI,使用 F# + Avalonia 构建。
- Neoray — 一个使用 GLFW 和 OpenGL 绑定的 Go GUI。
- Neovide — 一个简单的 Rust Neovim GUI。
- neovim-gtk — 一个用 Rust 编写的 GTK UI,使用 gtk-rs 绑定。
- Neovim Qt — 一个用 C++ 和 Qt 编写的轻量级跨平台 Neovim GUI。
- Uivonim — Veonim 的一个不活跃的分支,Veonim 是一个基于 Neovim 和 VSCode 扩展的简单模态 IDE,用 Electron 编写,具有 WebGL GPU 渲染和多线程。
配置
Nvim 的用户特定配置文件位于 $XDG_CONFIG_HOME/nvim/init.vim,默认为 ~/.config/nvim/init.vim。系统范围的配置文件位于 $XDG_CONFIG_DIRS/nvim/sysinit.vim,默认为 /etc/xdg/nvim/sysinit.vim。当系统范围的配置文件不存在时,Nvim 会检查 /usr/share/nvim/sysinit.vim,该文件不应由用户编辑。[1] 默认情况下,前一个全局配置文件不存在。如果您创建了前一个文件,您可能希望它 source 后一个文件,如果您仍然想要它提供的功能(即让 pacman 安装的 vim 包与 Nvim 一起工作)。
Nvim 与 Vim 的大部分选项兼容;但是,也有 Nvim 特有的选项。有关 Nvim 选项的完整列表,请参阅 Neovim 的帮助文件。
Nvim 的数据目录位于 ~/.local/share/nvim/,其中包含打开文件的交换文件,ShaDa(共享数据)文件,以及插件的站点目录。
从 Nvim 版本 0.5 开始,可以通过 Lua 设置 Nvim,默认为 ~/.config/nvim/init.lua,API 仍然很年轻,但常见配置开箱即用,无需太多额外步骤。请参阅 [2] 以获取有关如何转换当前配置的建议。目前,使用 init.lua 与常见的 init.vim 相比没有太大优势,但正确完成时,Lua 可以稍微提高启动速度,并且在使用几个用 Lua 编写的插件时特别有用,因为它易于配置。
从 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 或 :help nvim-from-vim neovim 命令。
加载插件
从官方仓库或AUR安装的 Vim/Nvim 插件会自动由 /etc/xdg/nvim/sysinit.vim source,因此无需采取任何额外步骤。大量插件可以在这两个地方找到,但添加插件最推荐的方式是使用插件管理器,最常用的有 vim-plugAUR(适用于 Vim 和 Nvim),以及 lazy.nvim(仅适用于 Nvim,用 Lua 编写)。两者都允许进行富有表现力的配置,从 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 光标支持
如果您想保存光标的最后位置,lastplace.lua 非常有用。只需将其放在 ~/.config/nvim/plugin/ 或系统范围的目录 /usr/share/nvim/runtime/plugin/ 中即可。
语言服务器协议
Neovim 包含一个内置的语言服务器协议客户端,而 nvim-lspconfig 插件为它提供了常见的配置。
有关 Arch 包列表,请参阅语言服务器协议。
用作分页器
您可以使用 :Man 命令打开手册页。要用 neovim 打开所有手册页,请将 MANPAGER 环境变量设置为 nvim +Man!。
对于其他分页器支持,请安装 nvimpagerAUR 或 nvimpager-gitAUR 包,并将 PAGER 环境变量设置为 nvimpager。
您还可以尝试 page,它打包在 page-gitAUR 中。
多个独立的 nvim 配置
可以使用 NVIM_APPNAME 环境变量并排安装多个 nvim 版本。在您的 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
可以在您的 .bashrc 或 .zshrc 中添加以下行来定义一个别名以缩短输入。
.zshrc
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。