Neovim

提供: ArchWiki
2023年1月28日 (土) 17:49時点におけるKgx (トーク | 投稿記録)による版 (Categoryのリンクを追加)
ナビゲーションに移動 検索に移動

NeovimVim のフォークで API の実装を容易にし、ユーザー体験を向上させ、プラグインの実装を改善します。

インストール

neovim パッケージを インストール または最新の開発バージョンの場合は neovim-nightly-binAUR を選択します。メインの構成言語として lua を使用することが強く推奨されます。 システムクリップボードを Neovim で動作させるには、xclip (X11) または wl-clipboard (Wayland) をインストールする必要があります。

ノート: neovim では、一部の機能が外部 プロバイダ に委任されます。 Python プロバイダの場合は、 python-pynvim を使用します。 クリップボードプロバイダの場合は、 provider-clipbood または :help provider-clipboard neovim コマンドを参照してください。

また、 多くのGUIおよびその他の関連プロジェクト のいずれかをインストールすることもできます (大部分は 公式リポジトリ または AUR にあります)

設定

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] デフォルトでは、以前のグローバルコンフィグレーションファイルは存在しません。前者のファイルを作成する場合、 pacman でインストールされた vim パッケージを Neovim で動作させる機能が必要な場合は、後者をソースにすることもできます。

Neovim は Vimのほとんどのオプションと互換性がありますが、 Neovim 固有のオプションもあります。 Neovim のオプションの完全なリストについては、 Neovim の help file を参照してください。

Neovim のデータディレクトリは ~/.local/share/nvim/ にあり、開いているファイルのスワップ、 ShaDa (共有データ) ファイル、プラグインのサイトディレクトリが含まれています。

Neovim のバージョン 0.5 以降では、Lua 経由で Neovim をセットアップすることができます。デフォルトでは ~/.config/nvim/init.lua、 API はまだ若いですが、一般的な設定は、これ以上のステップを踏むことなく、すぐに使えます。現在の設定を変換する方法については、 [2] を参照してください。現時点では、init.lua を使用しても一般的な init.vim を使用してもあまりメリットはありませんが、正しく実行すると、 Lua の起動時間がわずかに短縮され、設定も容易なため、 Lua で作成された複数のプラグインを使用する場合に特に便利になります。

vim からの移行

Neovim はメインの設定ディレクトリに ~/.vim ではなく $XDG_CONFIG_HOME/nvim を、メインの設定ファイルとして ~/.vimrc ではなく $XDG_CONFIG_HOME/nvim/init.vim を使用します。

移行に関する情報は nvim-from-vim を参照するか、neovim で :help nvim-from-vim コマンドを実行することで得ることができます。

vim と nvim の間の共有設定

Neovimは、メイン設定ディレクトリとして ~/.vim の代わりに $XDG_CONFIG_HOME/nvim を使用し、メイン設定ファイルとして ~/.vimrc の代わりに $XDG_CONFIG_HOME/nvim/init.vim を使用します。

vim を使い続けたい場合や、Neovim で既存の vim 構成をソース化したい場合は、 nvim-from-vim または :help nvim-from-vim neovim コマンド。

プラグインのロード

公式リポジトリAUR からインストールした Vim/Nvim プラグインは自動的に /etc/xdg/nvim/sysinit.vim でソースを取得するので、余計な手順を踏む必要はありません。膨大な数のプラグインが両方の場所で見つかりますが、プラグインを追加する最も推奨される方法はプラグインマネージャを使うことです。最もよく使われるのは vim-plug で、Vim と Nvim の両方に使えます。また packer は Nvim 0.5 以降で使える、lua で記述されたプラグインマネージャーです。どちらも github のブランチから実行時のコマンドまで、表現力豊かな設定が可能です。

vim 用に書かれたプラグインのほとんどは Nvim でも問題なく動作しますが、Nvim 用に書かれたプラグインのすべてが Vim で動作するわけではないので、互換性のある設定を確保したい場合は、従来の init.vim.vimrc を使ってください。

ヒントとテクニック

vi や vim を neovim で置き換える

$VISUAL$EDITOR 環境変数を設定することで大抵の場合に neovim が使われるようになります。

一部のアプリケーションでは vi や vim がデフォルトエディタとしてハードコードされていますが、neovim-drop-inAUR をインストールすることで neovim を使うことができます。

init.vim から .vimrc にシンボリックリンクを作成

neovim は標準 vim と互換性を保っているため、nvim/init.vim から .vimrc にシンボリックリンクを張ることで設定オプションをそのまま使うことができます:

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

neovim と vim の設定を分けたい場合、.vimrc ファイルの中で if ブロックを使うことでどちらかにだけ適用される設定を記述できます:

if has('nvim')
    " Neovim specific commands
else
    " Standard vim specific commands
endif

Neovim へ true color サポートを追加する

このプロジェクトREADMEs では、構文の強調表示に24ビットの TrueColor サポートを追加する方法と、カラーピッカーを使用してリアルタイムでどのように表示されるかを確認する方法について説明しています。 C++ の作成者(インストールされている場合)の構文の強調表示が付属しています。

カーソルの最後の位置をサポート

カーソルの最後の位置を保存したい場合は、lastplace.lua が非常に便利です。 ~/.config/nvim/plugin/ またはシステム全体のディレクトリ /usr/share/nvim/runtime/plugin/ に配置する必要があります。

言語サーバー プロトコル (LSP)

Neovim には組み込みの Language Server Protocol クライアントが含まれており、 nvim-lspconfig プラグインはその一般的な設定を提供します。

言語サーバーは、次のパッケージを使用してネイティブにインストールできます。

lSP config Language LSP サーバー パッケージ
als Ada/SPARK ada_language_serverAUR
angularls Angular
bashls BASH bash-language-server
ccls C, C++, Objective-C ccls ccls-gitAUR
clangd C++ clang
clojure_lsp Clojure clojure-lsp-binAUR
cmake CMake cmake-language-serverAUR
codeqlls CodeQL codeqlAUR
cssls CSS, LESS, SASS vscode-css-languageserver-binAUR
dartls Dart dart
denols JavaScript, TypeScript deno
dhall_lsp_server Dhall dhall-lsp-server
diagnosticls General purpose diagnostic-languageserverAUR
dockerls Dockerfile dockerfile-language-serverAUR
efm General purpose efm-langserver
elixirls Elixir elixir-lsAUR
elmls Elm elm-language-serverAUR
erlangls Erlang erlang_ls-gitAUR
flow Flow flowAUR
fortls Fortran fortran-language-serverAUR
fsautocomplete F#
gdscript GDScript godot
ghcide Haskell ghcideAUR
gopls GOlang gopls
graphql GraphQL graphql-lspAUR
groovyls Groovy groovy-language-server-gitAUR
haxe_language_server Haxe
hie Haskell haskell-ide-engineAUR
hls Haskell haskell-language-server
html HTML vscode-html-languageserverAUR
intelephense PHP nodejs-intelephenseAUR
java_language_server Java java-language-serverAUR
jdtls Java jdtlsAUR
jedi_language_server Jedi jedi-language-server
jsonls JSON vscode-json-languageserver-binAUR
julials Julia
kotlin_language_server Kotlin kotlin-language-serverAUR
leanls Lean
metals Scala metalsAUR
nimls Nim
ocamlls OCaml, Reason
ocamllsp OCaml, Reason ocaml-lsp-gitAUR
omnisharp OmniSharp omnisharp-roslynAUR
perlls Perl perl-perl-languageserverAUR
phpactor PHP
powershell_es PowerShell
purescriptls PureScript purescript-language-serverAUR
pyls Python python-language-server
pyls_ms Python microsoft-python-language-serverAUR
pylsp Python python-lsp-serverAUR
pyright Python pyright
r_language_server R
racket_langserver Racket
rescriptls ReScript
rls Rust rls-gitAUR
rnix nix rnix-lsp-gitAUR
rome Rome
rust_analyzer Rust rust-analyzer
scry Crystal scry-gitAUR
solargraph Ruby ruby-solargraphAUR
sorbet Ruby
sourcekit C, C++, Objective-C swift-languageAUR
sqlls SQL sql-language-serverAUR
sqls SQL
stylelint_lsp stylelint
sumneko_lua Lua lua-language-serverAUR
svelte Svelte nodejs-svelte-language-serverAUR
svls SystemVerilog
terraformls Terraform terraform-lsAUR
texlab (La)TeX texlab
tflint Terraform tflintAUR
tsserver TypeScript typescript-language-server-binAUR
vala_ls Vala vala-language-serverAUR
vimls Vim vim-language-serverAUR
vls V
vuels Vue nodejs-vlsAUR
yamlls YAML yaml-language-serverAUR
zeta_note Markdown
zls Zig zls-binAUR

ページャーとして使用

Neovim をページャーとして使用できます。 nvimpagerAUR または nvimpager-gitAUR パッケージをインストールし、PAGER の環境変数を nvimpagerexport します。

トラブルシューティング

Neovim を終了してもカーソルが元に戻らない

Neovim の終了後もカーソルが点滅してしまう場合は neovim FAQ の解決方法を見てください。

参照