Neovim

提供: ArchWiki
2021年7月10日 (土) 02:00時点におけるKgx (トーク | 投稿記録)による版 (→‎ヒントとテクニック: 言語サーバー プロトコル (LSP)の項目を翻訳して追加)
ナビゲーションに移動 検索に移動

Neovim はユーザーエクスペリエンスやプラグイン、GUI などを改良した Vim のフォークです。

インストール

neovim パッケージを インストール または最新の開発バージョンの場合は neovim-nightly-binAUR を選択します。これにより、 lua を主な構成言語として使用することが強く推奨されます。

ノート: 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 コマンド。

vim アドオンのロード

vim のためにインストールしたプラグインやシンタックス定義などのアドオンを使いたい場合、rtp を使って vim のデフォルトのランタイムパスを neovim に追加することができます。nvim の中から以下を実行するか、あるいは neovim の設定ファイルに追加してください:

set rtp^=/usr/share/vim/vimfiles/

ヒントとテクニック

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 を読んで構文の強調表示とどのようにするかについて説明しています。 カラーピッカーを使用してリアルタイムでどのように見えるかを確認して下さい。 C++ 用の(インストールされている場合)の構文強調表示が付属しています。

言語サーバー プロトコル (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 を終了してもカーソルが元に戻らない

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

参照