AstroNvim
Neovim の機能を導入直後からフル活用できるように、初期設定のみならず、操作性・利便性を高める著名パッケージを組み合わせた Neovim をベースとした IDE フレームワークのようなものです。同様な立ち位置のフレームワークである LazyVim のセットアップを紹介していますが、AstroNvim と使用感を比較する目的で導入してみます。
インストール
AstroNvim のドキュメント通りにインストールします。
LazyVim のセットアップ記事で導入したツール・ライブラリを入れたPCでインストール作業をしていきます。
まずは、NeoVim 利用者ならお馴染みの作業:
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim
以上の作業で AstroNvim のパッケージがインストールされ、ダッシュボード画面が表示されます。
セットアップ
AstroNvim のセットアップ の記述通りに作業します。
Install LSP
以下のコマンドを実行するように指示されてます。
:LspInstall pyright
LazyVim と同様、Mason が起動されるようです。
Mason が開かれると Available の中にインストール可能な Language Server Protocol (LSP) が一覧化されているので、必要なものをインストールしていきました。
Install Language Parser
以下のコマンドを実行するように指示されてます。
:TSInstall python
一覧については以下のコマンドで確認できます。
TSInstallInfo
Install Debugger
次に Debug Adapter Protocol (DAP) をインストールします。こちらも以下のコマンドを利用すると Mason が立ち上がりますので,DAP タブから一覧を確認できます。
:DapInstall python
Manage plugins
AstroNvim がデフォルトでインストールするパッケージ群をアップデートしておきます。<leader>
はデフォルトはスペースキーで、アップデートのために <leader>pU
を入力します。
:Lazy check # (<Leader>pu) to check for plugin updates
:Lazy update # (<Leader>pU) to apply any pending plugin updates
:Lazy sync # (<Leader>pS) to update and clean plugins
:Lazy clean # to remove any disabled or unused plugins
Update Mason packages and plugins
こちらもアップデート用のコマンドです。ワンコマンドでアップデート処理を開始できます。
:AstroUpdate # (<Leader>pa) to update both Neovim plugins and Mason packages
Check AstroNvim version
AstroNvim のバージョンを確認できます。AstroNvim がアップデートされたときに、現在の AstroNvim のパッケージが最新かどうかを確認することができます。
:AstroVersion # to display the currently installed AstroNvim version
Reload AstroNvim (EXPERIMENTAL)
以下のコマンドで AstroNvim 自体をリロードすることができます。新規パッケージや設定を書き換えるなど AstroNvim の機能に更新を加えた場合に実行すると立ち上げたまま反映できるコマンドです。EXPERIMENTAL と記載されているので、うまく動作しない場合は諦めて再実行するほうがよさそうです。
:AstroReload # to reload the AstroNvim configuration and any new user configuration changes without restarting. This is currently an experimental feature and may lead to instability until the next restart.
初期機能
初期機能はこちらに記載されています。
- Common plugin specifications with AstroCommunity
- AstroCommunity が管理するパッケージリポジトリです。コミュニティの一員がセットアップした内容が追加されており、利用したいパッケージがすでに登録されていればこちらを利用するとよさそうです。
- Statusline, Winbar, and Tabline with Heirline
- ステータスライン用のパッケージです。他のパッケージに比べてカスタマイズ性が高いようです。
- Plugin management with lazy.nvim
- LazyVim と同様のプラグイン管理パッケージです。操作感が同じになるため慣れている場合はかなり嬉しい。
- Package management with mason.nvim
- こちらも LazyVim と同様のパッケージ管理パッケージです。LSP / DAP / Linter / Formatter を管理できます。
- File explorer with Neo-tree
- ファイルエクスプローラとして機能するパッケージです。
- Autocompletion with Blink.cmp
- LSPやスニペットなど多様なソースに対応した補完プラグインです。タイポに強いファジーマッチャー機能や、柔軟な設定による高い拡張性を特長としています。
- Git integration with Gitsigns
- Gitの変更箇所を視覚的に表示するためのプラグインです。
- Terminal with Toggleterm
- ターミナルを簡単に開閉(トグル)できるプラグインです。
- Fuzzy finding with snacks.picker
- ファイルやバッファなどを選択するための多機能なピッカー(選択画面)を提供するパッケージです。
- Syntax highlighting with Treesitter
- Neovimのシンタックスハイライトを高速かつ正確にするためのパッケージです。
- Formatting and linting with none-ls
- null-ls.nvimのコミュニティによる後継プラグインです。LSP(Language Server Protocol)ではないリンタやフォーマッタなどのツールを、NeovimのLSP機能に組み込むことで、コードの整形、静的解析、補完などを一元的に扱えるようにします。
- Language Server Protocol with Native LSP
- Neovimに内蔵されているLSP(Language Server Protocol)クライアントのための、言語サーバごとの設定をまとめたプラグインです。
上記がインストール時に標準でインストールされており、キーバインドも設定されているため、Lazy.nvim や Mason.nvim によりインストールしたパッケージをフル活用できます。
追加設定
~/.config/nvim 内のファイルを編集することで設定を編集することができます。
❯ tree ~/.config/nvim
~/.config/nvim
├── README.md
├── init.lua
├── lazy-lock.json
├── lua
│ ├── community.lua
│ ├── lazy_setup.lua
│ ├── plugins
│ │ ├── astrocore.lua
│ │ ├── astrolsp.lua
│ │ ├── astroui.lua
│ │ ├── mason.lua
│ │ ├── none-ls.lua
│ │ ├── treesitter.lua
│ │ └── user.lua
│ └── polish.lua
├── neovim.yml
└── selene.toml
エディタ内では <leader>fa
で設定ファイルを簡単に検索することができます。
- AstroNvim 固有の設定ファイル
- ~/.config/nvim/lua/plugins/astro*.lua
- パッケージ管理系設定ファイル
- ~/.config/nvim/lua/plugins/mason.lua
- ~/.config/nvim/lua/plugins/none-ls.lua
- ~/.config/nvim/lua/plugins/treesitter.lua
- ユーザ固有の設定ファイル
- ~/.config/nvim/lua/plugins/user.lua
- AstroComunity関連の設定ファイル
- ~/.config/nvim/lua/comunity.lua
- その他
- ~/.config/nvim/init.lua
- 設定スクリプトの起点
- ~/.config/nvim/lua/polish.lua
- デフォルトでは機能していません。lua で実行したい処理があれば、AstroNvim 起動時に最後に実行されるスクリプト
- ~/.config/nvim/init.lua
LazyVim との比較
LazyVimの長所・短所をDeepSearchでまとめさせてみましたが,おおむね私の使用感と合っているかなと思います.スター数やコミュニティは LazyVim の方が多そうに見えますが,AstroCommunityはコントリビュータが多く便利な拡張機能の採用も多くされているようです.
-
長所
-
透明性と学習の容易さ: 設定構造が極めてシンプルで直感的 です。lua/plugins/ディレクトリに設定ファイルを追加していくという明快なルールにより、何がどこで設定されているかを容易に把握できます 。このプロセスを通じて、lazy.nvimプラグインマネージャーの動作原理を自然に学ぶことができます。
-
卓越したパフォーマンス: 軽量なコアと、必要な機能のみをユーザーが明示的に追加する「オプトイン」方式 により、デフォルト状態での起動速度と応答性は非常に高速です 。
-
完全な柔軟性とコントロール: プラグイン仕様を直接オーバーライドするカスタマイズモデルは、きめ細やかな調整を可能にします。これにより、ユーザーは設定を完全に「自分のもの」として所有し、コントロールしているという感覚を得ることができます 。
-
高品質なExtras: 公式の拡張機能であるExtrasは、Neovimコミュニティで高い評価を受ける開発者によって直接キュレーションされており、その品質、安定性、一貫性は非常に高いレベル にあります 。
-
-
短所
-
拡張性の限界: Extrasでカバーされていないニッチなプラグインや新しいツールについては、ユーザーが自分でプラグイン仕様を調査し、記述する必要があります。AstroCommunityほどの網羅性はありません 。
-
自己責任の範囲の広さ: プラグイン間の依存関係や、個々のプラグインの破壊的変更に伴う互換性の問題に対して、ユーザー自身が対処する必要がある場面が多くなります。これは柔軟性の裏返しとも言えます。
-
まとめ
AstroNvim の紹介をしました。しばらく利用してみて,落ち着いた設定を追記しようと思います。