本記事はVim駅伝 2025-05-21の記事です。
前回の記事はthincaさんの「Meguro.vim #29 を開催しました」でした。
はじめに
小ネタ記事です。
プラグインマネージャーであるlazy.nvimで、特定条件のときにだけ読み込みたいプラグインを読み込む方法の解説です。
- 使用環境
- Neovim:
v0.11.1 - lazy.nvim:
v11.17.1(6c3bda4)
- Neovim:
結論
特定条件のときにだけ使用したいプラグインは、lazy.nvimのcondを使うとアンインストール対象にならなくなります。
e.g. 環境変数PLUGIN_ENABLEDが定義されていたらsome/plugin.nvimを有効にする場合
{
"some/plugin.nvim",
cond = function()
local plugin = os.getenv("PLUGIN_ENABLED")
if plugin ~= nil then
return true
else
return false
end
end,
opt = { plugin_spec }
}
enabledプロパティじゃだめなの?
lazy.nvimのドキュメントを確認すると、プラグインの読み込み設定を制御するプロパティにはenabledとcondがあります。
名前からしてenabledを使用すれば良さそうですが、こちらを使うとプラグインが削除対象になってしまいます。
私はOLLAMA_HOSTという環境変数があるときにのみ、avante.nvimを読み込むような設定をしています。
enabledプロパティを使って以下のような設定を記述した時、OLLAMA_HOSTという環境変数が無い場合には、lazy.nvimの削除対象にavante.nvimが含まれてしまいます。
このままでは、他の削除したいプラグインといっしょに削除してしまいます。
{
"yetone/avante.nvim",
-- (省略)
enabled = function()
local ollama_host = os.getenv("OLLAMA_HOST")
if ollama_host ~= nil then
return true
else
return false
end
end,
}
削除対象のプラグインが並ぶCleanセクションにavante.nvimがいる図。
condプロパティを使う
lazy.nvimのドキュメントを確認すると、次のように書かれています
Behaves the same as enabled, but won't uninstall the plugin when the condition is false. Useful to disable some plugins in vscode, or firenvim for example.
ChatGPTによる日本語訳
有効化(enabled)と同じ動作をしますが、条件が偽の場合でもプラグインはアンインストールされません。VS Code や firenvim などで一部のプラグインを無効化したいときに便利です。
つまり、一部のプラグインを無効化したいときはenabledではなくcondプロパティを使ったほうが良いということですね。
先程の設定のenabledをcondに変更し、lazy.nvimのダッシュボードを確認してみます。
{
"yetone/avante.nvim",
-- (省略)
- enabled = function()
+ cond = function()
local ollama_host = os.getenv("OLLAMA_HOST")
if ollama_host ~= nil then
return true
else
return false
end
end,
}
avante.nvimがCleanセクションからDisabledセクションに移動している図。
これで特定条件でないときにはプラグインを無効化でき、なおかつ削除対象から外すことができました。
まとめ
init.luaを育てていたときにこの仕様を知りました。公式ドキュメントを読むって大事ですね。
私の場合は環境変数でプラグインを読み込みを制御する形で使っています。
VSCode Neovimとかとinit.luaを共存させたいときにはvim.g.vscodeを参照してあげると便利かもですね。

