[[lazy.nvim]]で読み込みプラグインの設定を[[Lua]]ファイルに分解する方法。[[Structured Setup (lazy.nvim)|Structured Setup]] と呼ばれている。
## ディレクトリとLuaファイルの作成
`plugins` のようなディレクトリを作成し、配下に `*.lua` 形式でプラグイン設定を記載していく。以下は一例。
`lua`
```lua
plugins
├── quicker.lua
└── tokyonight.lua
```
`plugins/quicker.lua`
```lua
-- 設定などが必要なら書く
return {
"stevearc/quicker.nvim",
event = "FileType qf",
opts = {},
}
```
`plugins/tokyonight.lua`
```lua
-- 設定など不要な名称のみ
return {
"folke/tokyonight.nvim",
}
```
## プラグインディレクトリを指定
[[lazy.nvim]]の `setup` で `spec.import` にプラグインディレクトリを指定する。
```lua
require("lazy").setup({
spec = {
-- pluginsディレクトリ配下をすべて読み込む
{ import = "plugins" },
},
})
```
## ハイライト設定
[[nvim_set_hl]]の指定は `init` にて `ColorScheme`の[[autocmd (Neovim)|autocmd]]で定義する。
```lua
-- flash.nvimの例
return {
"folke/flash.nvim",
event = "VeryLazy",
init = function()
vim.api.nvim_create_autocmd("ColorScheme", {
callback = function()
vim.api.nvim_set_hl(0, "FlashLabel", { fg = "#efef33", bold = true })
vim.api.nvim_set_hl(0, "FlashMatch", { fg = "#3d59a1", bold = true })
end,
})
end,
}
```
`init` は[[lazy.nvim]]の設定ロード時に実行されるため、[[lazy.nvim]]の後に[[Tokyo Night (Neovim)|Tokyo Night]]のような[[カラースキーマの設定 (Vim)|カラースキーマの設定]]をしていれば、[[カラースキーマ (Vim)|カラースキーマ]]が設定されたタイミングで自動的に `init` 内の[[カラースキーマ (Vim)|カラースキーマ]]で上書きされる。
> [!caution]
> `init` ではなく `config` に設定した場合は期待通り動作しない。`config` はプラグインのロード後に実行されるが、そのタイミングでは遅いのかもしれない...?
## 参考
- [🛠️ Installation \| lazy\.nvim](https://lazy.folke.io/installation)