自分にとっての無人島プラグイン ver.2025.01

この​記事はVim駅伝2025年1月31日(金)の​記事です。
前回の​記事は​ gsy0911 さんの​「neovimを​使って​4ヶ月」と​いう​記事でした。
次回の​記事は​ 2月3日(月) に​投稿される​予定です。

はじめに

vim歴が​4年目になった​輪ごむです。

今からもし、​10個の​プラグインしか​入っていない​vim(Neovim)を​渡されて無人島に​行かないと​いけないとしたら​何を​選びますか?と​いう​条件のもと​選出された​プラグインの​紹介に​なります。

現在自分の​Neovim(以下、​vim)には​120個ほどの​プラグインが​入っているようですが、​その​中から​無人島に​持っていくなら、​これだ!!!と​いう​プラグインを​選びました。​皆さんの​無人島プラグインも​教えて​もらえると​嬉しいです。

と​いう​ことで​無人島へ​行く​準備を​しましょう。

全1​0選

血の​涙を​流しながら​選出した​10個の​プラグインは​こちらです。

cmp-bufferddu-ui-ffが​含まれてるのは​ゆる​してください!!!!!!!​最低限の​ものだけに​絞ったので!!!!!!!!!​お願いします!!!

  1. denops.vim
  2. skkeleton
  3. vim-gin
  4. nvim-treesitter
  5. oil.nvim
  6. nvim-cmp
    1. cmp-buffer
    2. cmp-nvim-lsp
  7. mason.nvim
  8. mason-lspconfig.nvim
  9. nvim-lspconfig
  10. ddu.vim
    1. ddu-ui-ff
    2. ddu-source-file_rec
    3. ddu-kind-file
    4. ddu-filter-matcher_substring

1. vim-denops/denops.vim

まずは​こちらの​プラグインですが、​前提プラグインです。
以降​説明する​9つの​プラグインの​うち3つが​この​denops.vimに​依存しています。
これが​ないと​本当に​無人島生活を​始める​ことができないので​1番目に​選定しました!

2. vim-skk/skkeleton

denops依存プラグインの​一つ目です。
この​プラグインは​vim内で​SKKと​いう​文字入力システムを​実現する​ための​プラグインです。​日本人が​vimを​使う上で​障害と​なるのが、​かな​入力のまま​キー操作を​してしまって、​ターミナル上に​謎の​「jkjk」が​表示される​現象に​遭遇した​ことの​ある​人は​多く​いると​思います。​しかし​SKKを​導入する​ことで​英字/かな​入力の​切り​替えキーを​押さなくなり、​この​問題とおさらばできる​素晴らしい​入力方​法です。​癖の​ある​入力方​法の​ため、​慣れるまでに​時間を​要するかもしれませんが、​慣れてしまうと​もう​離れる​ことができません。

こちらが​作者の​方が​出した​ブログ記事です。
気に​なった方は​ぜひ​お試しください。

3. lambdalisue/vim-gin

またも​やdenops依存プラグインです。
denops.vimの​作者である​lambdalisueさんが​作成された​git操作を​vim上で​行う​ための​プラグインです。
次に​紹介する​gitsigns.nvimを​併用する​ことに​よって​ターミナルに​戻る​ことなく​全ての​git操作を​vim内で​完結させています。
vim-ginは​lazy-gitや​tigのような​独自UIで​git操作を​するのではなく、​gitコマンドを​実行した​ときに​表示される​標準出力と​あまり​変わらない​表示が​bufferに​出力され、​それを​vim上から​操作を​行える​非常に​強力な​プラグインです。
gitコマンドを​直接た​たきたい​ときには:Gin stash popのように:Gin以降に​実行したい​コマンドを​入力する​ことができます。​この機能の​おかげも​ありvimから​出ずに​全ての​git操作を​賄うことができています。

gin.vimでは​これらの​git操作を​行なっています。

4. lewis6991/gitsigns.nvim

この​プラグインは​denops非依存です。
先ほど​紹介した​vim-ginと​同じく​git操作を​行う​ための​プラグインですが、​別の​用途で​活躍しています。

gitsigns.nvimでは

と​いった​操作を​する​ために​使っています。

副産物と​して、​signcolumnや​行番号の​色が​変わって​エディタが​おしゃれに​なります。

5. stevearc/oil.nvim

こちらは​ファイラプラグインです。
特徴は、​vimの​バッファと​して​扱える​ため、ddで​行を​削除する​ことで​ファイルや​フォルダの​削除を​行えたり、:%sを​使って​一括ファイル名の​変換等を​行えます。
tree形式の​ファイラが​好きな​人には​刺さらないかもしれませんが、​ファイラを​探している​人が​いたらぜひ​使ってみてください。

6. hrsh7th/nvim-cmp

補完プラグインです。
asyncomplete.vim、​ddc.vim、​mini.completion、​blink-cmp等を​使った​経験が​ありますが​nvim-cmpが​一番​手に​なじんだ​ため​使い続けています。

わが​ままを​いうと、​skkeletonの​補完を​行ってくれる​ソースや​絵文字ソースなども​含めたかったのですが、​無人島に​大量の​荷物を​持っていく​ことは​できないため、​なくなく​置いてきました。

7. williamboman/mason.nvim

LS等を​管理してくれる​プラグインです。
vim-jpでは​miseを​使ったりnixを​使って​LSを​管理している​人もいますが、​自分は​windows, WSL, Linux, MacOSを​気分で​使い分けている​ため一番​手っ取り早く​LSを​インストールできる​mason.nvimを​好んで​使っています。

8. williamboman/mason-lspconfig.nvim

mason.nvimと​nvim-lspconfigの​橋渡し的な​プラグインです。

9. neovim/nvim-lspconfig

vimで​lspの​初期設定を​用意してくれていたり、​便利関数を​提供してくれている​プラグインと​いう​認識です。​間違えていたらどなたか​訂正お願いします。
最近は​nvim側に​色々な​lsp関連の​機能が​追加されましたが、​依然と​して​lsを​気軽に​扱う​ためには​必須な​プラグインです。

10. Shougo/ddu.vim

最後に​紹介するのは​暗黒美夢王こと​Shougoさんの​作成された​ddu.vimです。
ddu.vimとは​なんぞや?と​いう​記事に​ついては、​Shougoさんが​書かれた​記事や​kyoh86さんの​書いた​記事、​手前味噌ですが​私の​書いた​記事を​参考と​して​貼って​おきます。

少し​雑な​表現と​なってしまいますが、​telescope.nvimの​設定を​一から​自分の​好きなように​できます!と​いう​プラグインです。
telescope.nvimや​fzf.vimと​いった​プラグインを​使った​経験が​ありましたが、​ddu.vimを​使う​ことで​自分の​好きなように​sourceや​filterを​追加する​ことができて​非常に​便利です。
先に​あげたように​一から​設定を​書く​必要が​ある​ため、​万人に​おすすめできる​プラグインでは​ありませんが​その分、​自分好みの​挙動を​実現する​ことができて、​しっかりと​リターンを​得る​ことのできる​プラグインだと​思っています。​また、​作者が​日本人である​ため、​母国語で​質問できると​いうのも​非常に​良い点だと​思っています。

自分の​用途と​しては​ファイルの​検索と​Live grep機能、​無人島には​連れてくることができませんでしたが、​lambdalisueさんが​作成された​mr.vimと​連携させて​直近で​開いた​ファイルや​保存した​ファイルを​検索する​mrソースを​主に​使っています。

コードを​書いていると、​開いている​ファイル内は​勿論の​こと、​プロジェクト内の​別の​ファイルを​パパっと​開きたいことが​よく​あります。​そのような​時に​ddu.vimを​使って​シュッと​開く​ことができると​非常に​気持ちが​良い​ものです。​oil.vimとの​使い分けと​しては​同一階層の​ファイルを​開く​ときやリネーム等の​ファイル操作には​oil.nvim。​それ以外の​ファイルを​開く​ときは​ddu.vimと​いう​使い​分けを​しています。​VSCodeのCtrl + pと​似た​機能です。

おわりに

10個しか​持っていけないと​なると​結構​悩みました。​わが​ままを​言って​20個くらいに​したいし、​前提プラグインは​含めないなどの​案も​考えましたが、​飽くまで​無人島に​行く​ことを​念頭に​置いて​選定した​ため妥協なく​選ばせて​もらいました。

プラグインマネージャーが​選ばれていない​理由は、​10個なら​遅延は​いらないから​runtimepathへ​直接ぶち込もうと​いう​考えに​よる​ものです。