🧊

My Neovim plugins 2024

棚卸しのシーズンなので、そのついでに。

個人的なルール

(N)Vimはカスタマイズできるのがいい!ってことで、すごいたくさん設定を書いてる人とか、山ほどプラグインをいれてる人とかも多いけど、自分はそうではない。

  • 設定は1ファイルにおさめる
  • できるだけ単機能なものを組み合わせる
  • 気の合うSensible defaultsに従う

という感じでやってる。

こだわりがあるのかないのか、自分でもよくわからない。

今のところ、lazy.nvimを含めて35ヶしかプラグインを使ってない。

https://github.com/leaysgur/dotfiles/blob/7d98c8fe5312114a3ccb9a408d68fa34eba27722/nvim.lua

テーマまわり

https://github.com/fynnfluegge/monet.nvim

クロード・モネの有名な絵画である「睡蓮」の色使いをベースにしたカラースキームとのこと。

基本的に青とか紺ベースが好きなので、ここ最近のイチオシ。

https://github.com/echasnovski/mini.icons

nvim_web_deviconsよりもアイコンの雰囲気が好みってだけではあるが、mock_nvim_web_devicons()でモックもできて便利。

UI/UX

https://github.com/bluz71/nvim-linefly

シンプルなステータスライン。

これぞ気の合うデフォルト設定って感じだったので。

https://github.com/b0o/incline.nvim

バッファの右上にファイル名を出してくれるやつ。

ステータスラインにもファイル名は出るけど、laststatus = 3にしてるので、:vsとかで画面を割るとアクティブになってないとわからなくて不便なので。

https://github.com/Saghen/blink.indent

いわゆるインデントガイド。

あとで出てくるblink.cmpにお世話になる記念に乗り換えた。

https://github.com/NvChad/nvim-colorizer.lua

色に関する表記があったとき、Virtual textでそれを表示してくれる。

最近インラインで表示できるオプションが追加されて、複数の色が1行に並んでるときもみやすくなった。

https://github.com/ibhagwan/smartyank.nvim

YankしたものをOSのクリップボードに飛ばしてくれる(個人的に)画期的なプラグイン。

ついでにハイライトもしてくれてわかりやすい。

https://github.com/sphamba/smear-cursor.nvim

Neovideみたくカーソル移動にエフェクトをつけてくれるプラグイン。

mini.animatecursorでも同様のことはできてたけど、こっちのほうがよりNeovideっぽい。

https://github.com/nvim-focus/focus.nvim

:spなんかで分割した画面の幅高さを、いまフォーカスしてるものが見やすくなるよういい感じに自動リサイズしてくれる画期的なプラグイン。

今まで通り均等に整列させるモードと切り替えられるコマンドもある。

https://github.com/echasnovski/mini.diff

Gitと連携して、行番号の色を変えてる。gitsigns.nvimでもいいけど、より機能が少なかったから。

https://github.com/RRethy/vim-illuminate

カーソルのあるところにある単語と同じものをハイライトしてくれる。

ちゃんと知りたい時は*で検索したりするけど、変数スコープを考慮してくれたりと地味にわかりやすい。

https://github.com/mvllow/modes.nvim

Normal/Insert/Deleteみたいな各種モードを、行・カーソルハイライトで明示してくれるプラグイン。

こういうさりげないのが好き。

https://github.com/nvim-neo-tree/neo-tree.nvim

有名なファイラー。

ただ個人的な需要としては、

  • Netrwのように、vi ./dirってするとそのディレクトリ内のファイルを一覧できる
  • ツリービューでディレクトリをtoggleできる
  • リネームやファイルの移動ができるとなおよい

くらいなので、やや機能過多を感じてるけど、他に代わりが見つけられない。誰か知ってたら教えてください。

Treesitter関連

https://github.com/nvim-treesitter/nvim-treesitter

言わずもがな。

https://github.com/JoosepAlviste/nvim-ts-context-commentstring

コンテキストに応じてコメント文字を変えてくれるやつ。これがないと.html/.vue/.astro/.svelteは書けない。

https://github.com/nvim-treesitter/nvim-treesitter-context

今いるコンテキスト(関数とかループとか)を見せてくれるやつ。

https://github.com/windwp/nvim-ts-autotag

HTMLやJSXやらで、開きタグをリネームしたら閉じタグも一緒にリネームしてくれる。

nvim-autopairsのタグ版って感じで閉じタグを自動で書いてくれる。これがないと以下略。

https://github.com/theHamsta/nvim-treesitter-pairs

カッコとかタグとか、あらゆるペアをジャンプできるようになる。

ネストしたカッコのペアを一括で削除したりもできて便利だが、たまに効かない?

https://github.com/terrortylor/nvim-comment

nvim-ts-context-commentstringを実際に発動させる担当。

https://github.com/Wansmer/treesj

複数行になってるものを1行にしたり、またその逆にしたりと便利。

テキスト編集

https://github.com/Darazaki/indent-o-matic

インデントに使う文字とサイズを自動判別するやつ。

https://github.com/echasnovski/mini.surround

クオートを置き換えたり、削除したり、選択範囲を囲ったり。

https://github.com/monkoose/matchparen.nvim

デフォルトのmatchparenの改良版とのことだが、対応するカッコをハイライトする用途でしか使ってないつもり。

https://github.com/windwp/nvim-autopairs

対応するカッコの自動挿入をしてくれる。nvim-ts-autotagのプレーンなカッコ版。

https://github.com/stevearc/conform.nvim

mason.nvimでインストールしたフォーマッタを発動させるやつ。

_のワイルドカード指定で、明示のないfiletypeにまとめてPrettierを仕掛けられるのが好き。

https://github.com/zbirenbaum/copilot.lua

Copilotをカーソル位置で自動で動かすのに使ってる。パネルは使ってない。

LSPまわり

https://github.com/neovim/nvim-lspconfig https://github.com/williamboman/mason-lspconfig.nvim https://github.com/williamboman/mason.nvim

特に言うことなし。

https://github.com/rachartier/tiny-inline-diagnostic.nvim

デフォルトのLSPのDiagnosticsの表示方法を改善してくれるプラグイン。

デフォルトのやつは、画面幅が狭いと何が書いてあるかわからないけど、これは改行したり回り込んだりしてくれる。

https://github.com/DNLHC/glance.nvim

個人的これがあるからNvim使ってるかもしれないプラグイン筆頭。

その変数や関数がどこから参照されてるかとか、定義はどうなってるとか、そういったものをその名の通りチラ見させてくれる。

https://github.com/Saghen/blink.cmp

新進気鋭の補完プラグインやけど、既に十分な実用性があると思う。

blinkシリーズは他にもあるので、今後にも期待である。

おわりに

Neovim使うならこれいれとけ!的なプラグインの顔ぶれとは、またちょっと違う毛色になってるんではなかろうか。

こういうテイストでおすすめなプラグインがあれば、ぜひ教えてください。

カッコまわり、なんかもう少しシュッとできんかな〜。