跳转至内容

Neovim

来自 ArchWiki

NeovimVim 的一个分支,旨在改进代码库,以便于实现 API,改善用户体验和插件实现。Neovim 启发了 Helix 等编辑器。

安装

安装 neovim 包,或者 neovim-gitAUR 以获取最新的开发版本,这强烈鼓励使用 Lua 作为其主要的配置语言。为了使系统剪贴板能与 Neovim 一起工作,您可能需要安装 xclip (X11) 或 wl-clipboard (Wayland)。

注意 使用 neovim 时,其一些功能委托给外部“提供者”。对于 Python 提供者,请使用 python-pynvim。对于剪贴板提供者,请参阅 provider-clipboard:help provider-clipboard neovim 命令。

也可以安装 许多 GUI 和其他相关项目中的一个。

  • Gnvim — 一个有主见的 Neovim GTK GUI。
https://github.com/vhakulinen/gnvim || gnvim-gitAUR
  • FVim — 一个跨平台的 Neovim 前端 UI,使用 F# + Avalonia 构建。
https://github.com/yatli/fvim || fvimAUR
  • Neoray — 一个使用 GLFW 和 OpenGL 绑定的 Go GUI。
https://github.com/hismailbulut/neoray || neoray-gitAUR
  • Neovide — 一个简单的 Rust Neovim GUI。
https://github.com/neovide/neovide || neovide
  • neovim-gtk — 一个用 Rust 编写的 GTK UI,使用 gtk-rs 绑定。
https://github.com/Lyude/neovim-gtk || neovim-gtkAUR
  • Neovim Qt — 一个用 C++ 和 Qt 编写的轻量级跨平台 Neovim GUI。
https://github.com/equalsraf/neovim-qt || neovim-qt
  • Uivonim — Veonim 的一个不活跃的分支,Veonim 是一个基于 Neovim 和 VSCode 扩展的简单模态 IDE,用 Electron 编写,具有 WebGL GPU 渲染和多线程。
https://github.com/smolck/uivonim || uivonim-gitAUR

配置

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!

对于其他分页器支持,请安装 nvimpagerAURnvimpager-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 解析器错误

本文章或章节需要扩充。

原因: 如果不指定安装的软件,这是无用的。(请在Talk:Neovim 中讨论)

更新系统后,建议同步 neovim 的包,例如 :Lazy sync,然后手动强制更新解析器,使用 :TSUpdate。删除 ~/.local/share/nvim 中的 neovim 缓存文件可能会解决问题。

未找到 Tree-sitter 可执行文件

tree-sitter 包仅提供库。如果需要 tree-sitter 可执行文件,请安装 tree-sitter-cli

参见