lazy.nvim の遅延ロードが取りこぼす起動経路

結論 lazy.nvim の遅延ロードは、spec (プラグインごとに書く設定の表) に書いたきっかけが来るまでプラグインを読まない。きっかけが来ない起動の仕方では一度も読まれず、エラーも出ない event = { "BufReadPost", "BufNewFile" } で遅延したプラグインは、引数なしで起動すると読まれない。起動直後から要る statusline などは lazy = false か event = "VeryLazy" にする プラグインが読まれる前にそのバッファの FileType が済んでいると、FileType はやり直されない。nvim a.md では a.md の FileType が BufEnter より先に済むので、event = "BufEnter" と event = "VeryLazy" で読むプラグインは、a.md に ftplugin も FileType の autocmd も効かない。:edit a.md で開けば効き、ft = "markdown" と event = "BufReadPost" なら nvim a.md でも効く cmd = "Tool" で起動時に用意されるのは :Tool だけで、:ToolInstall のような他のコマンドと plugin/*.vim が張るキーマップは、:Tool を打って読まれるまで無い nvim --headless では UIEnter が来ないので、VeryLazy のプラグインは読まれない。-c 'qa!' は VimEnter より前に終わる。headless で読まれないことは、UI を attach した起動で壊れている証拠にならない 以下は Neovim 0.12.5 と lazy.nvim v11.17.5 (の 4 commit 後、306a055) で確かめた。プラグインは、ローカルのディレクトリを spec の dir で読ませた最小のものである。「実 UI」は、script コマンドが作る疑似端末 (pty) の中で nvim を画面付きで起動し、起動 300ms 後の状態を記録した結果である。 ...

2026-11-12 ·  2026-11-12 · 7 分 · 1274 文字