Neovim - Arch Linux 中文维基

跳至內容

# Neovim

出自 Arch Linux 中文维基

相關文章

- Vim
- Emacs

翻譯狀態：

- 本文（或部分內容）譯自 Neovim，最近一次同步於 2024-02-04，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Neovim 是 Vim 的分支，旨在改進代碼庫，從而使得 API 更容易實現，並改善用戶體驗和插件實現。Neovim 啟發了 Helix 等編輯器。

## 安裝

安裝 neovim包 或 neovim-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

- neovide包 — Rust GUI.

  https://github.com/neovide/neovide || neovide包

- neoray-gitAUR — Go GUI.

  https://github.com/hismailbulut/neoray || neoray-gitAUR

- gnvimAUR — GTK GUI.

  https://github.com/vhakulinen/gnvim || gnvimAUR

- fvimAUR — F# GUI.

  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 或更新的版本），packer已停止維護，建議使用lazy.nvim或pckr.nvim。這些插件管理器都可接受在 GitHub 分支到運行時命令這一範圍內的深度配置。

大多數為 Vim 編寫的插件無需花費很多精力即可在 Neovim 上工作，不過不是每個為 Neovim 編寫的插件都適用於 Vim，因此，如果你的目標是確保配置兼容兩個版本，堅持使用 `init.vim` 或 `.vimrc`.

## 提示與技巧

### 將 vi 和 vim 替換為 neovim

大部分情況下設置 `$VISUAL` 和 `$EDITOR` 環境變量應該就足夠了。

一些應用程式可能硬編碼 vi 或 vim 為默認編輯器，對於這種情況，安裝 neovim-symlinksAUR 或 neovim-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（LSP）客戶端，nvim-lspconfig 插件提供常見的配置。

參見語言伺服器協議。

### Use as a pager

你可以用 `:Man` 命令打開手冊頁。要使用 Neovim 打開所有手冊頁，請將 `MANPAGER` environment variable 設置為 `nvim +Man!`.

對其他幫助閱讀程序的支持請安裝 nvimpagerAUR 或 nvimpager-gitAUR 包並將 `PAGER` environment variable 設置為 `nvimpager`.

也可以試試 page, 打包在 page-gitAUR 中。

## 問題解決

### 退出後光標沒有恢復到之前的狀態

如果退出 Neovim 後光標仍閃爍，參見 neovim FAQ 中的解決方案。

## 參見

- GitHub 倉庫
- GitHub wiki

分類：​

- 文本編輯器
- 終端應用程式

Neovim
新增話題