AstroNvimで追加したプラグインが読み込まれない

AstroNvimでプラグインを追加する際、プラグインのインストールはできたのに読み込まれなくてつまずきました。

環境

  • WSL2(Debian)
  • Neovim v0.9.1
  • AstroNvim v3.34.4

結論

AstroNvimではプラグイン管理にlazy.nvimを使用していて、Lazy Loadingをデフォルトでtrue(ON)にしているため、読み込みのタイミングも合わせて設定する必要があります。
今回はvim-slimを入れて、slimファイルのときにシンタックスハイライトを効かせたかったのでft = "slim"を設定しました。

-- ~/.config/nvim/lua/user/plugins/user.lua

return {
  {
    "slim-template/vim-slim",
    ft = "slim",
  },
}

やったこと

プラグインのインストール

ドキュメントに記載の通りAstronvim/user_exampleをフォークして、以下のコマンドを実行します。

git clone https://github.com/<username>/<config_repo> ~/.config/nvim/lua/user

user/plugins/user.lua に追加したいプラグイン名を記述します。今回は、slimファイルでシンタックスハイライトを適用させるためのプラグインであるvim-slimを追加しました。

-- ~/.config/nvim/lua/user/plugins/user.lua

return {
  "slim-template/vim-slim",
}

Neovimを再起動し、インストール処理は問題なく実行されたのですが、slimファイルを開いてもシンタックスハイライトが効きません。

slimファイルでシンタックスハイライトが効いていない

<Leader>psプラグインのステータスを確認したところ、vim-slimがロードされていないようでした。

vim-slimがNot Loadedになっている

user.luaにロードタイミングの設定を追加

AstroNvimではlazy.nvimの設定をdefaults = { lazy = true }としていて、Lazy LoadingがデフォルトでONになっています。 そのため、プラグインを追加する場合は読み込みのタイミングを合わせて設定するか、プラグイン単位で遅延読み込みをOFFにする必要がありました。 上記ではロードのタイミングを設定していなかったため、いつまでもvim-slimが読み込まれなかった、というわけです。
AstroNvimのドキュメントにも以下のように記載されています。

CAUTION
By default we have Lazy.nvim enabling lazy loading for plugins. Because of this make sure to either include conditions for plugins to be loaded or make sure to add lazy = false to the plugin definition.

デフォルトではLazy.nvimがプラグインの遅延読み込みを有効にしています。このため、プラグインを読み込むための条件を含めるか、プラグインの定義にlazy = falseを追加してください。

今回はslimファイルを開いたタイミングでプラグインを読み込みたいので、ft = "slim"を追加します。

-- ~/.config/nvim/lua/user/plugins/user.lua

return {
  {
    "slim-template/vim-slim",
    ft = "slim",
  },
}

無事にslimファイルを開いたときにシンタックスハイライトが適用されました。

slimファイルでシンタックスハイライトが効いている

プラグインのステータスもちゃんとLoadedになっています。

vim-slimがLoadedに入っている

ft以外にもlazy.nvimでは以下のような設定が用意されています。 設定項目の一覧はlazy.nvimのreadmeに記載されています。

  • event
  • cmd
  • keys

補足:Lazy Loading(遅延読み込み)ってなに?

vim(Neovim)の起動時はプラグインを読み込まずに、特定のタイミング(xxxコマンドを実行したら、filetypeがxxxだったら等)で読み込むようにする設定。 必要な時に必要なプラグインだけを読み込むようにすることで、vimのパフォーマンスを上げることが目的のようです。