LazyVimは、Neovimとlazy.nvimを組み合わせた設定フレームワークです。プラグインのキーマップは、プラグイン仕様のkeys、プラグインのconfig、またはlua/config/keymaps.luaへ定義できます。
1. プラグイン仕様のkeysで定義する#
最も推奨される方法は、lua/plugins/<plugin>.luaのkeysフィールドへキーマップを書くことです。キーが押されたときにプラグインを読み込めるため、遅延読み込みと相性が良い方法です。
-- lua/plugins/nvim-tree.lua
return {
{
"nvim-tree/nvim-tree.lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("nvim-tree").setup({
view = { width = 30 },
})
end,
keys = {
{ "<C-n>", "<cmd>NvimTreeToggle<cr>", desc = "Toggle file tree" },
{ "<leader>e", "<cmd>NvimTreeToggle<cr>", desc = "Toggle file tree" },
},
},
}descはWhichKeyなどで表示される説明です。<C-n>はCtrl+n、<leader>eはLeaderキーの後にeを押す操作です。
2. configでプラグイン内部のキーを設定する#
補完メニューなど、プラグイン自身がキーマップを管理する場合は、config内で設定します。
return {
{
"hrsh7th/nvim-cmp",
config = function()
local cmp = require("cmp")
cmp.setup({
mapping = {
["<Tab>"] = cmp.mapping.select_next_item(),
["<S-Tab>"] = cmp.mapping.select_prev_item(),
["<C-y>"] = cmp.mapping.confirm({ select = true }),
},
})
end,
},
}この設定は、nvim-cmpが読み込まれた後に有効になります。
3. lua/config/keymaps.luaで定義する#
プラグインに依存しないキーや、すでに読み込まれている機能のキーをまとめたい場合は、lua/config/keymaps.luaを使います。
vim.keymap.set("n", "<leader>nt", "<cmd>NvimTreeToggle<cr>", {
desc = "Toggle file tree",
})ただし、プラグインがまだ読み込まれていない場合、コマンドが存在しない可能性があります。遅延読み込みを維持したい場合は、プラグイン仕様のkeysへ定義する方が安全です。keymaps.luaから呼び出すなら、プラグインをlazy = falseにするか、適切なcmdやeventを指定してください。
4. 手動でプラグインを読み込む必要はあるか#
通常、lua/plugins/の仕様はlua/config/lazy.luaのimport設定によって自動で読み込まれます。
keys:キーが押されたときにプラグインを読み込む。cmd:指定したExコマンドが実行されたときに読み込む。event:指定したイベントが発生したときに読み込む。lazy = false:起動時に読み込む。
設定を変更した後は、Neovimで:Lazyを開き、必要ならSyncやUpdateを実行します。
まとめ#
- 遅延読み込みを維持したいプラグインのキーは、仕様の
keysへ書く。 - プラグイン内部の操作は、
config内で設定する。 - 共通キーマップは
lua/config/keymaps.luaへ書く。 - lazyなプラグインのコマンドを起動時に直接参照しない。


