Neovim

来自 Arch Linux 中文维基

NeovimVim 的分支,旨在改进代码库,从而使得 API 更容易实现,并改善用户体验和插件实现。Neovim 启发了 Helix 等编辑器。

安装[编辑 | 编辑源代码]

安装 neovimneovim-gitAUR(开发版本)软件包,两者强烈建议使用 Lua 作为主要的配置语言。要使 Neovim 能够访问系统剪贴板,可能需要安装 xclip(X11)或 wl-clipboard(Wayland)。

注意: 在 Neovim 中,一些功能委托给外部“providers”(提供者)。对于 Python 提供者,使用 python-pynvim。 对于剪贴板提供者,参见 provider-clipboard:help provider-clipboard Neovim 命令。

也可以安装 GUI 和其他相关项目,它们中的大多数都在官方软件仓库AUR 中:

  • neovim-qt — Fast, lightweight, and customizable Qt GUI. Provides a modern interface, including support for multiple tabs, split windows, and customizable themes.
https://github.com/equalsraf/neovim-qt || neovim-qt
  • neovim-gtkAUR — GTK GUI. Provides a modern, customizable interface, including support for split windows, multiple tabs, and customizable themes.
https://github.com/Lyude/neovim-gtk || neovim-gtkAUR
  • uivonim-gitAUR — (Inactive) Simple and lightweight GTK GUI. Provides a minimalistic interface, including support for split windows and customizable themes.
uivonim-gitAUR || uivonim-gitAUR
https://github.com/neovide/neovide || neovide
https://github.com/hismailbulut/neoray || neoray-gitAUR
https://github.com/vhakulinen/gnvim || gnvimAUR
https://github.com/yatli/fvim || fvimAUR

配置[编辑 | 编辑源代码]

Neovim 的用户配置位于 $XDG_CONFIG_HOME/nvim/init.vim(默认是 ~/.config/nvim/init.vim)。全局配置文件位于 $XDG_CONFIG_DIRS/nvim/sysinit.vim(默认是 /etc/xdg/nvim/sysinit.vim)。如果不存在,则会载入 /usr/share/nvim/sysinit.vim,后者不建议由用户编辑。[1] 默认情况下,前一个全局配置文件并不存在。如果你创建了前一个文件,那你可能也想在其中 source 后一个文件(如果你想获得它提供的功能:允许 Neovim 使用通过 pacman 安装的 Vim 包)。

Neovim 兼容 Vim 大多数的选项,不过有一些选项特定于 Neovim。完整的 Neovim 选项列表参见 Neovim 的帮助文件

Neovim 的数据目录位于 ~/.local/share/nvim/,包含打开文件的交换文件、ShaDa(共享数据)文件和插件的站点目录。

从 Neovim 0.5 版本开始,可以使用 Lua 设置 Neovim(默认是 ~/.config/nvim/init.lua),API 仍然很年轻,不过常见的配置开箱即用,无需过多配置。关于转换现有的配置的建议,参见 [2]。当前,与 init.vim 相比,使用 init.lua 没有太多的优势,不过在使用得当时,Lua 可以小幅改善启动时间,并且由于配置简单,在使用以 Lua 编写的插件时会很有用。

从 Vim 迁移[编辑 | 编辑源代码]

要将现有的 Vim 配置迁移到 Neovim,只需将 ~/.vimrc 复制到 ~/.config/nvim/init.vim。如果需要的话,将 ~/.vim/autoload/ 的内容复制到 ~/.local/share/nvim/site/autoload/

在 Vim 和 Neovim 间共享配置[编辑 | 编辑源代码]

Neovim 将 $XDG_CONFIG_HOME/nvim 而不是 ~/.vim 作为主要配置目录,并使用 $XDG_CONFIG_HOME/nvim/init.vim 而不是 ~/.vimrc 作为主要配置文件。

如果要继续使用 Vim,又希望在 Neovim 中 source 现有的 Vim 配置,参见 nvim-from-vim:help nvim-from-vim Neovim 命令。

加载插件[编辑 | 编辑源代码]

/etc/xdg/nvim/sysinit.vim 会自动 source 从官方软件仓库AUR 中安装的 Vim 或 Neovim 插件,因此无需额外设置。大量的插件都可以在两个地方找到,但最好通过插件管理器添加插件,最常用的是 vim-plug(可用于 Vim 和 Neovim)和 packer(使用 Lua 编写,只能用于 Neovim 0.5 或更新的版本)。两者都允许深度的配置,从 GitHub 分支到运行时命令。

大多数为 Vim 编写的插件无需花费很多精力即可在 Neovim 上工作,不过不是每个为 Neovim 编写的插件都适用于 Vim,因此,如果你的目标是确保配置兼容两个版本,坚持使用 init.vim.vimrc

提示与技巧[编辑 | 编辑源代码]

将 vi 和 vim 替换为 neovim[编辑 | 编辑源代码]

大部分情况下设置 $VISUAL$EDITOR 环境变量应该就足够了。

一些应用程序可能硬编码 vi 或 vim 为默认编辑器,对于这种情况,安装 neovim-symlinksAURneovim-drop-inAUR

将 init.vim 设置为指向 .vimrc 的符号连接[编辑 | 编辑源代码]

因为 Neovim 与标准 Vim 大部分兼容,可以将 nvim/init.vim 设置为指向原来 .vimrc 的符号连接,从而保留旧的配置选项:

$ ln -s ~/.vimrc ~/.config/nvim/init.vim

如果想要某几行特定于每个版本,可以使用 if 块:

.vimrc
if has('nvim')
    " 特定于 Neovim 的命令
else
    " 特定于标准 Vim 的命令
endif

真彩色支持[编辑 | 编辑源代码]

这个项目README 文件解释了如何为语法高亮添加 24 位“真彩色”支持,以及如何使用取色器实时查看效果。包含作者为 C++ 提供的语法高亮(如果安装的话)。

Lastplace cursor support[编辑 | 编辑源代码]

如果你想保留光标的最后位置,lastplace.lua 非常有用。只需将其放置在 ~/.config/nvim/plugin/ 或系统目录 /usr/share/nvim/runtime/plugin/ 中即可。

Language Server Protocol[编辑 | 编辑源代码]

Neovim 内置 Language Server Protocol 客户端,nvim-lspconfig 插件提供常见的配置。

Language Server Protocol

Use as a pager[编辑 | 编辑源代码]

You can use the :Man command to open manual pages. To open all manual pages with neovim set the MANPAGER environment variable to nvim +Man!.

For other pager support install either the nvimpagerAUR or the nvimpager-gitAUR package and set the PAGER environment variable to nvimpager.

You can also try page, packaged in page-gitAUR.

问题解决[编辑 | 编辑源代码]

退出后光标没有恢复到之前的状态[编辑 | 编辑源代码]

如果退出 Neovim 后光标仍闪烁,参见 neovim FAQ 中的解决方案。

参见[编辑 | 编辑源代码]