跳转至内容

Neovim

来自 ArchWiki

NeovimVim 的一个分支,旨在改进代码库,使 API 的实现更简单,提升用户体验和插件实现。Neovim 启发了像 Helix 这样的编辑器。

安装

安装 neovim 软件包,或者安装 neovim-gitAUR 获取最新的开发版本,该版本强烈建议使用 Lua 作为其主要配置语言。为了使系统剪贴板在 Neovim 中正常工作,您可能需要安装 xclip (X11) 或 wl-clipboard (Wayland)。

注意 在 neovim 中,某些功能被委托给外部“提供者 (providers)”。对于 Python 提供者,请使用 python-pynvim。关于剪贴板提供者,请参阅 provider-clipboard 或执行 neovim 命令 :help provider-clipboard

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

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

配置

Nvim 将配置、数据和日志存储在符合 XDG Base Directory 规范的标准位置。鼓励插件遵循此约定,但并非强制要求。

Nvim 的用户级配置文件名为 init.luainit.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!

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

本文章或章节需要扩充。

原因: 如果不指定安装的软件,此项毫无意义。(在 Talk:Neovim 中讨论)

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

找不到 Tree-sitter 可执行文件

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

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.