Table of Contents
はじめに
久しぶりにnvimのアップデートをしたら、LSPの設定周りでエラーが出たので、修正ついでにnvimの設定ファイル自体の見直しをしました。
プラグイン管理にlazy.nvimを使っていて、設定をいくつかのファイルに分割して管理しています。
一つのファイルで管理するのもありですが、プラグインが増えると、それに比例してコード量が増えて可読性が低くなります。そのため、自分は設定ファイルを分割して管理するようにしています。
今までは分割したファイルは、以下のように毎回手動で読み込んでいました。
-- 分割したファイル分だけrequirelocal hoge_plugin0 = require("plugins.hoge-plugin0")local hoge_plugin1 = require("plugins.hoge-plugin1")
local plugins = { hoge_plugin0, hoge_plugin1,}
-- lazyの設定を色々して…require("lazy").setup(plugins, lazy_opts)この例だと2つなのでそこまで大変ではないのですが、10を超えたあたりから流石に辛くなってきました。
どうにかできないかと調べると、手動でrequireしなくても、lazy.nvimのデフォルトの機能で、特定のディレクトリの設定ファイルを一括で読み込むことができたので紹介します。
バージョンはこちらです。
| ツール | バージョン |
|---|---|
| neovim | v0.11.5 |
| lazy.nvim | 11.17.5 |
specとimportを使って一括読み込み
すごく簡単で、specとimportを使えばそのディレクトリのluaファイルを一括で読み込んでくれました。ディレクトリが深い場合は. で繋ぎます。
require("lazy").setup({ spec = { { import = "plugins.enable" }, { import = "plugins.enable.lsp" }, { import = "plugins.enable.appearance" }, }, -- その他色々設定をする})余談
自分のnvimの設定ファイルのディレクトリはこのようになっています。
.├── init.lua└── lua ├── base.lua ## nvimの基本設定(インデントや行数表示など) ├── config ## lazy.nvimで作っていたのでとりあえず作ったディレクトリ │ └── lazy.lua ## lazyの設定ファイル ├── lsp ## nvim0.11からのLSPの設定を読み込むディレクトリ │ └── plugins ## プラグインの設定ファイルを管理するディレクトリ ├── disable ## 使わなくなった設定 └── enable ## 有効化したい設定 ├── appearance ## 外観を管理するディレクトリ ├── lsp ## LSP関連のディレクトリ └── grug_far.lua ## どこにも属さない設定ファイルはenable直下新しいプラグインを試すときに一時的に競合するプラグインを無効化したいので、disableディレクトリを作って一時避難できるようにしています。
自分はdot_filesをchezmoiで管理しているのですが、このディレクトリ構成だと微妙に使い心地がアンマッチで今後どうにかしたいなとは思ってます。
dot_filesを編集するときは chezmoi cd で移動して修正後、 chezmoi apply で適用しています。
これだと、enableにあったファイルをdisableに移してapplyを実行しても、enableにあったファイルは消えずにdisableにファイルが作られるだけで、意図したディレクトリ構成(enableにあったファイルは削除されてほしい)になりません。
この問題を解決できるコマンドがchezmoiになさそうなので、毎回~/.config/nvimに移動して削除後applyする運用でカバーしています…
どうにかしたさはありますが、頻繁に起こる問題ではないので一旦見て見ぬふりをしています…(dot_filesはgit管理しているので削除しちゃってもいいかなと最近は思ってます)
終わりに
lazy.nvimでプラグインの設定ファイルを一括で読み込んで、適用する方法について紹介しました。前までは毎回手動でファイル数分だけrequireして適用していたのですが、この方法を知ってかなり管理が楽になりました。
今度はlazy.nvimの遅延読み込みを設定して、起動の高速化を試してみようかなと思います!