覚えられない操作は`g?`に詰め込もう

この​記事はVim駅伝2024年12月25日(水)の​記事です。

前回の​記事はtadashi-aikawaさんの​「📘2024年 Neovim成長日記 - Minerva」と​いう​記事でした。

次回の​記事は​ 12月27日(金) に​投稿される​予定です。


はじめに

みなさん、​自分の​入れている​プラグインと​その機能を​把握していますか?​私は​できていません。
定期的に​プラグインの​棚卸を​しているので、​比較的把握している​つもりですが、​それでも​忘れてしまう​機能が​多く​あります。

最近に​なって、​覚えられないなら​覚えなければ​いいかと​いう​考えに​達したので、​その​方​法に​ついて​紹介します!

解決方​法

やっている​ことと​しては​こちらの​記事に​非常に​近い、vim.ui.select()に​日常的に​使わない​EXコマンドや<Plug>(hoge)を​突っ込んで​選択すると​いう​方​法を​取っています。

telescope.nvimで​作る​簡易コマンドパレット​(VSCodeの​Ctrl + Shift + Pっぽいの)​ | Atusy’s blog

※Gifで​見た​ものと​デフォルトのvim.ui.select()で​UIが​違う​理由と​しては、matsui54/ddu-vim-ui-selectと​いう​プラグインを​使っているからです。

EXコマンドを​実行させる​ために​使っているのは​この​モジュールで、
https://github.com/staticWagomU/dotvim/blob/main/nvim/lua/ui_select.lua

<Plug>(hoge)を​実行させるのは​この​モジュールです。
https://github.com/staticWagomU/dotvim/blob/main/nvim/lua/select_action.lua

これらの​モジュールをg?を​起動の​キーと​して​起動させるように​しています。
私は​部屋の​片づけでも​たまに​使う​ものを​一つの​箱に​詰め込んでいるので、​現実でも​Neovim内でも​同じ​ことを​しているようです。

さらに​これを​発展させて、​buffer localな​キーマッピングを​使って​ftplugin毎に​少し​カスタマイズした​内容を​表示するようにも​しています。

(https://github.com/staticWagomU/dotvim/blob/7a437f6cfd1a175c8edf1412410b73828ab5b301/nvim/after/ftplugin/go.lua#L10-L17

12345678
vim.keymap.set(
  { 'n', 'x' },
  'g?',
  function()
    require('ui_select')({'GoFmt', 'GoRun', 'GoTest', unpack(_G.favoriteList)}, vim.fn.execute)
  end,
  { buffer = true }
)

https://github.com/staticWagomU/dotvim/blob/7a437f6cfd1a175c8edf1412410b73828ab5b301/nvim/after/ftplugin/json.lua#L15-L21

1234567
    {
      'g?',
      function()
        require('select_action')('packageinfo')
      end,
      { buffer = true }
    },

おわりに

これの​おかげで​今まで​以上に​雑に​プラグインを​いれる​ことができそうです。

Tags