エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。

【Neovim】lazy.nvimでカスタムキーマッピングを設定する

やりたいこと

新しくプラグインを追加したので、そのプラグインの機能を簡単に呼び出すキーマッピングを設定したい。

例えば、 telescope.nvim でファイル名検索をするコマンドとして <leader>ffを設定したいとする。

書式

-- ~/.config/nvim/lua/plugins/spec1.lua
return {
  'プラグイン名',
  keys = {
    { キー, 実行コマンド or 関数, モード?, オプション? }
  }
}
  • キー:実際に呼び出し時に使うキーを書く
  • 実行コマンド:↑を押したときに実行されるコマンドや関数を書く
  • モード:Normalモードや、insertモードなど、どのモードで発動するかを決める(省略時はNormalモード)
  • オプション:そのコマンドの説明などを記載する

詳細は

:h lazy.nvim

でヘルプを開き、 LazyKeySpecを検索すると良い。

設定例①:単純にコマンドを実行する(telescope.nvim)

lazy.nvimの公式ドキュメント通りに導入すると、 <leader> =スペースキーとなるため、
以下の設定ファイルはこのようなコマンド設定をしたことになる。

  • スペースキーff:Telescope find_files hidden=trueを呼び出す(ファイル名検索)
  • スペースキーfg:Telescope live_grepを呼び出す(全検索)
return {
  'nvim-telescope/telescope.nvim',
  tag = 'v0.2.0',
  dependencies = { 'nvim-lua/plenary.nvim' },
  keys = {
    -- 検索
    { "<leader>ff", "<cmd>Telescope find_files hidden=true<cr>", desc = "Find files" },
    { "<leader>fg", "<cmd>Telescope live_grep<cr>",  desc = "Live grep" }
  }
}

参考:📄Arrow icon of a page link【Neovim】プラグインマネージャーlazy.nvimをインストールして設定する

<leader>について知りたい場合: 📄Arrow icon of a page link【Vim】leaderとは何か?

設定例②:lua関数を実行する(telescope.nvim)

function() ~ endが関数定義なので、 gd と打つとこの関数が実行される。

keys = {
  { "gd", function() require("telescope.builtin").lsp_definitions() end, desc = "LSP Definition" },
}