メインコンテンツへスキップ
  1. ノート/
  2. Vim / Neovim/

LazyVimでプラグインのキーマップを設定する

·1110 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml

LazyVimは、Neovimとlazy.nvimを組み合わせた設定フレームワークです。プラグインのキーマップは、プラグイン仕様のkeys、プラグインのconfig、またはlua/config/keymaps.luaへ定義できます。

1. プラグイン仕様のkeysで定義する
#

最も推奨される方法は、lua/plugins/<plugin>.luakeysフィールドへキーマップを書くことです。キーが押されたときにプラグインを読み込めるため、遅延読み込みと相性が良い方法です。

-- 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にするか、適切なcmdeventを指定してください。

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なプラグインのコマンドを起動時に直接参照しない。

関連記事


评论