---
title: "覚えられない操作は`g?`に詰め込もう"
pubDate: 2024-12-25T00:00:00+09:00
published: true
tags: ["vim駅伝"]
---


この記事は[Vim駅伝](https://vim-jp.org/ekiden/)2024年12月25日(水)の記事です。

前回の記事は[tadashi-aikawa](https://github.com/tadashi-aikawa)さんの「[📘2024年 Neovim成長日記 - Minerva](https://minerva.mamansoft.net/%F0%9F%93%98Articles/%F0%9F%93%982024%E5%B9%B4+Neovim%E6%88%90%E9%95%B7%E6%97%A5%E8%A8%98)」という記事でした。

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

---


## はじめに

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

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

### 解決方法

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

[telescope.nvimで作る簡易コマンドパレット（VSCodeのCtrl + Shift + Pっぽいの） \| Atusy's blog](https://blog.atusy.net/2022/11/03/telescope-as-command-pallete/)

![](/images/blog/2024-12-25-vim-ekiden/Animation.gif)

※Gifで見たものとデフォルトの`vim.ui.select()`でUIが違う理由としては、[matsui54/ddu-vim-ui-select](https://github.com/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
```lua
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
```lua
    {
      'g?',
      function()
        require('select_action')('packageinfo')
      end,
      { buffer = true }
    },
```


### おわりに

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