🎾

ワシの使っているNeovimプラグインは200個近くあるぞ

2022/04/11に公開約34,200字

昔はこういうの結構やられてた気がするけど最近あんまり見なくなったのでやってみました。

タイトルは

https://daisuzu.hatenablog.com/entry/2012/05/06/204019
から借用しました。

注意点

  • プラグイン自体の説明はあまりするつもりはないので、GitHub の README を読むなり使ってみるなりしてみてください。
  • 私は結構頻繁にプラグイン乗り換えるので 2022 春バージョンと思ってください。
  • 私が言うのもあれですが、プラグインはいっぱい入れればいいというものではありません。ひとつひとつを使いこなすのが大事です。多ければそれだけ管理も大変です。
  • 競合があるプラグインは比較して選定しているつもりですが、あくまでも私の趣味の範囲での選定となります。絶対的な指標があってこっちの方が優れているといった判断をしているわけではありません。

私の Neovim の使い方

使い方が違うと参考にならないことが多いため前提としてどういうふうに Neovim を使っているか書いておきます。

  • Neovim を IDE のようにして使っています。(いわゆる Neovim IDE 派です)
  • 用途は、コーディング、ドキュメント作成などほぼすべてで使っています。
  • OS は Linux でタイル型の WM を使っています。
  • Neovim は HEAD を使っています。
  • 作業はだいたい、ターミナル(wezterm) + ブラウザ(Vivaldi)だけで行っています。
  • 1 プロジェクト 1 Neovim で作業してます。別プロジェクトを開くときは wezterm のタブを新しく作ってそこで Neovim を開きます。
  • プロジェクト内の作業は基本的にその Neovim 内で完結させます。ビルド等は Neovim の terminal をタスクランナーとして使っています。
  • Neovim のタブはほとんど使いません。
  • ほぼすべての作業の起点はファジーファインダーです。
  • バッファ移動はファジーファインダーかバッファーラインを使います。

私のプラグイン選びの基本方針

  • Linux+Neovim で動くものを入れている
  • 基本的に同じ機能のプラグインは 2 つ入れない
  • 管理する言語を増やしたくないので同じ機能のものがあったら多少機能が劣化してても Lua 製のものを入れる
  • カスタマイズ性やシンプル性よりも、リッチな見た目、機能のものを好む
  • 外部依存やリモートプラグインはなるべく減らす方向だが機能が良ければ入れることもある
  • 新しいモダンなプラグインを採用する
  • 世界的にメジャーなものを採用する(日本製かどうかは重視していない)
  • あまり過度にカスタマイズしすぎないようにしている(別プラグインに乗り換えるのが大変になるため)
  • 使いそうなものはとりあえずインストールしておく(LazyLoad にしておけば実害はないので)

記載方法

カテゴリごとに名前: コメントの順で列挙していきます。コメントは機能の説明というよりは私の感想です。

カテゴリの種類は以前書いたものにだいたい整合しているはずです。

https://qiita.com/yutkat/items/f19b2a0a962a587db5cf

パッケージマネージャー

  1. wbthomason/packer.nvim: Neovim で一番シェアが高いパッケージマネージャー。設定の関係性がやや複雑だが遅延読み込みもできて便利。

https://github.com/wbthomason/packer.nvim

Library

  1. tpope/vim-repeat: ドットリピート対応するときに必要なやつ。

https://github.com/tpope/vim-repeat
  1. nvim-lua/popup.nvim: Lua 用のライブラリ。結構なプラグインが依存してるから入れておく。

https://github.com/nvim-lua/popup.nvim
  1. nvim-lua/plenary.nvim: Lua 用のライブラリ。結構なプラグインが依存してるから入れておく。

https://github.com/nvim-lua/plenary.nvim
  1. tami5/sqlite.lua: Lua 用のライブラリ。sqlite を便利に使えるようになる。

https://github.com/tami5/sqlite.lua
  1. MunifTanjim/nui.nvim: Lua 用のライブラリ。たまに必要なプラグインがあるからとりあえず入れておく。

https://github.com/MunifTanjim/nui.nvim
  1. kyazdani42/nvim-web-devicons: devicon が表示できるライブラリ。リッチな見た目にしたいから入れておく。

https://github.com/kyazdani42/nvim-web-devicons
  1. rcarriga/nvim-notify: 通知をおしゃれなポップアップ形式で出せるようになる。

https://github.com/rcarriga/nvim-notify

Colorscheme

  1. EdenEast/nightfox.nvim: 最近使ってる人が多い nord 系テーマ。

https://github.com/EdenEast/nightfox.nvim

LSP と自動補完

自動補完系

  1. hrsh7th/nvim-cmp: 自動補完プラグイン。いろいろカスタマイズできて動作も速くて見た目もかっこいい。神。

https://github.com/hrsh7th/nvim-cmp
  1. onsails/lspkind-nvim: cmp で補完の種類におしゃれなアイコン出せるようになる。

https://github.com/onsails/lspkind-nvim
  1. hrsh7th/cmp-nvim-lsp: lsp 用の補完ソース。

https://github.com/hrsh7th/cmp-nvim-lsp
  1. hrsh7th/cmp-nvim-lsp-signature-help: lsp 用の補完ソース。

https://github.com/hrsh7th/cmp-nvim-lsp-signature-help
  1. hrsh7th/cmp-nvim-lsp-document-symbol: lsp 用の補完ソース。

https://github.com/hrsh7th/cmp-nvim-lsp-document-symbol
  1. hrsh7th/cmp-buffer: バッファ補完用の補完ソース。

https://github.com/hrsh7th/cmp-buffer
  1. hrsh7th/cmp-path: パス補完用の補完ソース。

https://github.com/hrsh7th/cmp-path
  1. hrsh7th/cmp-omni: オムニ補完用の補完ソース。正直あんまり使ってない。

https://github.com/hrsh7th/cmp-omni
  1. hrsh7th/cmp-nvim-lua: Lua 用の補完ソース。

https://github.com/hrsh7th/cmp-nvim-lua
  1. zbirenbaum/copilot-cmp: copilot 用の補完ソース。

https://github.com/zbirenbaum/copilot-cmp
  1. hrsh7th/cmp-emoji: emoji 用の補完ソース。

https://github.com/hrsh7th/cmp-emoji
  1. hrsh7th/cmp-calc: 補完で簡単な計算してくれるようになるソース。

https://github.com/hrsh7th/cmp-calc
  1. f3fora/cmp-spell: Vim の spell 機能から補完してくれるようになるソース。

https://github.com/f3fora/cmp-spell
  1. yutkat/cmp-mocword: mocword(次の英単語を予測してくれる)用の補完ソース。

https://github.com/yutkat/cmp-mocword
  1. uga-rosa/cmp-dictionary: 辞書補完してくれるためのソース。

https://github.com/uga-rosa/cmp-dictionary
  1. saadparwaiz1/cmp_luasnip: LuaSnip 用の補完ソース。

https://github.com/saadparwaiz1/cmp_luasnip
  1. tzachar/cmp-tabnine: TabNine 用の補完ソース。

https://github.com/tzachar/cmp-tabnine
  1. ray-x/cmp-treesitter: Treesitter 用の補完ソース。

https://github.com/ray-x/cmp-treesitter
  1. hrsh7th/cmp-cmdline: コマンドラインでも補完してくれるようになる。これで wilder.nvim を使わなくなった。

https://github.com/hrsh7th/cmp-cmdline

LSP 関連

  1. neovim/nvim-lspconfig: nvim-lsp 用の設定。Neovim のネイティブ lsp 使うなら必須。

https://github.com/neovim/nvim-lspconfig
  1. williamboman/nvim-lsp-installer: nvim-lsp じゃ LSP をインストールしてくれないので必須。

https://github.com/williamboman/nvim-lsp-installer
  1. tamago324/nlsp-settings.nvim: プロジェクト固有の LSP の設定を定義できる。

https://github.com/tamago324/nlsp-settings.nvim
  1. weilbith/nvim-lsp-smag: LSP と tagfunc をつないでくれる。

https://github.com/weilbith/nvim-lsp-smag

LSP 用の UI

  1. tami5/lspsaga.nvim: LSP 関連の足りない UI だったりコマンドだったりを追加してくれる。他にも ray-x/navigator.lua とかもあるけどよく比較できていない。

https://github.com/tami5/lspsaga.nvim
  1. folke/lsp-colors.nvim: LSP 用の足りない色定義を追加してくれる。

https://github.com/folke/lsp-colors.nvim
  1. folke/trouble.nvim: Diagnostics とか定義ジャンプとかを便利にしてくれる UI を提供してくれる。

https://github.com/folke/trouble.nvim
  1. EthanJWright/toolwindow.nvim: trouble.nvim をさらに拡張してリッチにしてくれる。正直そんなに使ってない気がする・・・

https://github.com/EthanJWright/toolwindow.nvim
  1. j-hui/fidget.nvim: むっちゃかっこいい感じで LSP の状態を表示してくれる。こういうおしゃれなの好き。

https://github.com/j-hui/fidget.nvim

AI 補完

  1. github/copilot.vim: Neovim で Copilot する。

https://github.com/github/copilot.vim
  1. zbirenbaum/copilot.lua: copilot.vim を Lua 移植したものだけどまだ copilot.vim が必要らしい。

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

ファジーファインダー

  1. nvim-telescope/telescope.nvim: たぶん Neovim で一番シェアが高いファジーファインダー。これがないと作業できないレベル。

https://github.com/nvim-telescope/telescope.nvim
  1. nvim-telescope/telescope-frecency.nvim: いい感じによく使うファイル順で表示してくれる FF ソース。一番使っている。

https://github.com/nvim-telescope/telescope-frecency.nvim
  1. nvim-telescope/telescope-packer.nvim: 今 packer で入れてるプラグインを表示してくれる。

https://github.com/nvim-telescope/telescope-packer.nvim
  1. nvim-telescope/telescope-symbols.nvim: 絵文字とかのシンボルを FF 検索できる。nvim-cmp の補完でだいたい事足りるので利用頻度は低め。

https://github.com/nvim-telescope/telescope-symbols.nvim
  1. nvim-telescope/telescope-github.nvim: telescope から gh を使えるようになる(あまり使ってないけど)

https://github.com/nvim-telescope/telescope-github.nvim
  1. nvim-telescope/telescope-fzf-writer.nvim: live_grep を速くしたやつ。使ってないけど一応入れてる。

https://github.com/nvim-telescope/telescope-fzf-writer.nvim
  1. nvim-telescope/telescope-smart-history.nvim: コマンドヒストリーから FF で絞り込める。あまり使ってない。

https://github.com/nvim-telescope/telescope-smart-history.nvim
  1. nvim-telescope/telescope-media-files.nvim: 画像をプレビューしながら表示してくれる。正直まったく使ってないけど面白いから入れてる。

https://github.com/nvim-telescope/telescope-media-files.nvim
  1. LinArcX/telescope-command-palette.nvim: コマンドよく忘れるかもだから一応入れてるけどそんなに忘れないことがわかった。(なおマッピングはよく忘れる)

https://github.com/LinArcX/telescope-command-palette.nvim

Treesitter

  1. nvim-treesitter/nvim-treesitter: treesitter 本体。これがないと世界が色付き始めない。

https://github.com/nvim-treesitter/nvim-treesitter
  1. yioneko/nvim-yati: tresitter 本体の indent はバグっているのでこっちを使ったほうがいい。

https://github.com/yioneko/nvim-yati
  1. romgrk/nvim-treesitter-context: 画面に収まりきらない長い関数とかの関数名とかを上部に表示してくれる。レガシーなコードとか読むときに便利だったりするときもある。

https://github.com/romgrk/nvim-treesitter-context
  1. p00f/nvim-ts-rainbow: 対応する括弧の色を変えてくれる。ちょっと重いので行数でリミットかけるとよい。

https://github.com/p00f/nvim-ts-rainbow
  1. JoosepAlviste/nvim-ts-context-commentstring: treesitter で解析して commentstring をいい感じに設定してくれる。svelte みたいに 1 ファイルに複数のコメントスタイルが混ざる時にとても便利。

https://github.com/JoosepAlviste/nvim-ts-context-commentstring
  1. haringsrob/nvim_context_vt: 閉じ括弧部分に virtual text でどの括弧に対応するか教えてくれる。

https://github.com/haringsrob/nvim_context_vt
  1. nvim-treesitter/nvim-treesitter-refactor: treesitter を使ってリネームとかできる。普通は LSP の方を使うのでほぼ使うことがない。

https://github.com/nvim-treesitter/nvim-treesitter-refactor
  1. nvim-treesitter/nvim-tree-docs: コードコメントを treesitter から生成してくれるらしい。使いこなせていない。

https://github.com/nvim-treesitter/nvim-tree-docs
  1. vigoux/architext.nvim: treesitter の構文から置換したりできるらしい。まったく使いこなせてない。

https://github.com/vigoux/architext.nvim
  1. m-demare/hlargs.nvim: 引数の変数だけ色を変えてくれる。

https://github.com/m-demare/hlargs.nvim

Treesitter textobj & operator

  1. nvim-treesitter/nvim-treesitter-textobjects: treesitter で textobject できる。

https://github.com/nvim-treesitter/nvim-treesitter-textobjects
  1. RRethy/nvim-treesitter-textsubjects: textsubject として新しい textobject を定義する。

https://github.com/RRethy/nvim-treesitter-textsubjects
  1. mfussenegger/nvim-ts-hint-textobject: easymotion みたいな感じで textobject を選択できる。どれにマップしてたかよく忘れる人には便利。

https://github.com/mfussenegger/nvim-ts-hint-textobject
  1. David-Kunz/treesitter-unit: 今カーソルがある場所に紐づく領域を unit として textobject で扱える。雑にコピーしたいときとかに便利。これと nvim-ts-hint-textobject で sandwich 以外の textobject を使わなくなった。

https://github.com/David-Kunz/treesitter-unit
  1. mizlan/iswap.nvim: treesitter 版の vim-swap。

https://github.com/mizlan/iswap.nvim

見た目関連

ステータスライン

  1. nvim-lualine/lualine.nvim: たぶんいちばんシェアが高いステータスライン。設定が短く済んで便利。

https://github.com/nvim-lualine/lualine.nvim
  1. SmiteshP/nvim-gps: ステータスライン上に今いる関数名を表示するプラグイン。treesitter を使ってる。

https://github.com/SmiteshP/nvim-gps

バッファーライン

  1. akinsho/bufferline.nvim: バッファーライン。作者が akinsho さんで安心できる。

https://github.com/akinsho/bufferline.nvim

ハイライト系

  1. RRethy/vim-illuminate: カーソルが当たった単語を光らせる。なにげに LSP とかに対応してる。

https://github.com/RRethy/vim-illuminate
  1. norcalli/nvim-colorizer.lua: 色コード部分に色を付けてくれる。

https://github.com/norcalli/nvim-colorizer.lua
  1. t9md/vim-quickhl: 今のカーソル下の単語に色を付けてくれる。コードリーディングするときにとても便利。Vim 時代からずっとお世話になっている。

https://github.com/t9md/vim-quickhl
  1. Pocco81/HighStr.nvim: 指定箇所に好きな色を塗れる。全然使ってないがどこかで使いたい。

https://github.com/Pocco81/HighStr.nvim
  1. folke/todo-comments.nvim: TODO などの文字を目立たせてくれる。

https://github.com/folke/todo-comments.nvim
  1. mvllow/modes.nvim: モードが行数の色でわかるようになる。正直あんまりモードがわからなくなることがないが、かっこいいから入れている。

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

レイアウト系

  1. myusuf3/numbers.vim: InsertMode のときに相対行を絶対行に切り替えてくれる。

https://github.com/myusuf3/numbers.vim

サイドバー

  1. GustavoKatel/sidebar.nvim: Git の状態とか Diagnostics とかファイル一覧とかが表示されてるサイドバーを表示する。

https://github.com/GustavoKatel/sidebar.nvim

メニュー

  1. sunjon/stylish.nvim: むちゃくちゃかっこいいいろんな UI パーツが入っている。メニューもある。

https://github.com/sunjon/stylish.nvim

スタートアップ画面

  1. goolord/alpha-nvim: 起動時にファイル名の引数なしで起動した場合に表示するスタートアップ画面を設定できる。

https://github.com/goolord/alpha-nvim

スクロールバー

  1. petertriho/nvim-scrollbar: スクロールバーを表示する。hlslens と組み合わせれば検索したワードがどこらへんにあるかもわかるようになる。革命

https://github.com/petertriho/nvim-scrollbar

カーソル

  1. edluffy/specs.nvim: カーソルが大きく移動したときにエフェクトを発生させる。かっこいい。ただそれだけ。入れてるけど基本無効にして飛び道具披露したいときにオンにする。

https://github.com/edluffy/specs.nvim

移動系

選択移動

  1. phaazon/hop.nvim: Easymotion のようにラベルを指定してジャンプする。離れた特定の単語に飛ぶときによく使っている。高速に動作するところが ○

https://github.com/phaazon/hop.nvim

縦方向移動

  1. unblevable/quick-scope: 今いる行の f で一発(または二発)で飛べる単語をハイライトしてくれる

https://github.com/unblevable/quick-scope
  1. ggandor/lightspeed.nvim: f 移動をカスタマイズしてくれる。私は clever-f の代替としてしか使っていないが、hop.nvim 的な機能もある。

https://github.com/ggandor/lightspeed.nvim

縦方向移動

  1. haya14busa/vim-edgemotion: 縦方向のいい感じの区切りの位置にジャンプ移動してくれる。

https://github.com/haya14busa/vim-edgemotion
  1. machakann/vim-columnmove: 縦方向で文字があるところまで移動してくれる。

https://github.com/machakann/vim-columnmove

単語移動

  1. justinmk/vim-ipmotion: {}での移動をカスタマイズできる。

https://github.com/justinmk/vim-ipmotion
  1. bkad/CamelCaseMotion: w での移動などを Camel case 区切りで移動できるようになる。

https://github.com/bkad/CamelCaseMotion
  1. yutkat/wb-only-current-line.vim: w や b の移動が行をまたがなくなる。

https://github.com/yutkat/wb-only-current-line.vim

移動履歴ジャンプ

  1. osyo-manga/vim-milfeulle: jumplist と違い 1 バッファー内のみでの変更履歴にジャンプできる。

https://github.com/osyo-manga/vim-milfeulle
  1. Bakudankun/BackAndForward.vim: 戻る進むの挙動をブラウザっぽくしてくれる。

https://github.com/Bakudankun/BackAndForward.vim

編集支援系

選択

  1. terryma/vim-expand-region: 選択領域を徐々に広げることができる。treesitter でも一応同じことができる。

https://github.com/terryma/vim-expand-region
  1. terryma/vim-multiple-cursors: マルチカーソル。あまり活用できていない。

https://github.com/terryma/vim-multiple-cursors
  1. kana/vim-niceblock: ビジュアルモードでの動作を改善してくれる。

https://github.com/kana/vim-niceblock

編集サポート

  1. junegunn/vim-easy-align: 指定のスタイルにコードを整形できる。フォーマッターを使うのが普通になってきたのであまり使うことがなくなってきた。

https://github.com/junegunn/vim-easy-align
  1. thinca/vim-partedit: 選択範囲を別のバッファーに切り出すことができる。

https://github.com/thinca/vim-partedit
  1. yutkat/delete-word-to-chars.vim: ctrl-w のときだけ単語区切り文字(iskeyword)を変更する。

https://github.com/yutkat/delete-word-to-chars.vim

Textobject

Treesitter のものを使っている

Operator

  1. mopp/vim-operator-convert-case: camel case や snake case を簡単に切り替えられる。地味にすごく便利。

https://github.com/mopp/vim-operator-convert-case
  1. gbprod/substitute.nvim: vim-operator-replace の Lua 版。

https://github.com/gbprod/substitute.nvim
  1. machakann/vim-sandwich: 括弧とかの部分をあれこれできる。個人的には textobj-sandwich の方が利用頻度高い。唯一神。

https://github.com/machakann/vim-sandwich

Join

  1. AckslD/nvim-revJ.lua: 行の方法分割を指定できる。

https://github.com/AckslD/nvim-revJ.lua

値の加算・減算

  1. deris/vim-rengbang: 連番生成が便利になる。

https://github.com/deris/vim-rengbang
  1. monaqa/dial.nvim: 数字や時刻などを加算、減算してくれる

https://github.com/monaqa/dial.nvim

ヤンク

  1. gbprod/yanky.nvim: yankring みたいにヤンクした履歴を順番に貼り付けられる。

https://github.com/gbprod/yanky.nvim
  1. AckslD/nvim-neoclip.lua: ヤンクした結果をファジーファインダーで探すことができる。

https://github.com/AckslD/nvim-neoclip.lua
  1. yutkat/save-clipboard-on-exit.vim: Linux だと Neovim を終了させたあとクリップボードがクリアされるので強制的にヤンクしたものを入れる。

https://github.com/yutkat/save-clipboard-on-exit.vim

ペースト

  1. yutkat/auto-paste-mode.vim: 中央クリックでペーストした際に自動で paste mode になる。

https://github.com/yutkat/auto-paste-mode.vim
  1. tversteeg/registers.nvim: レジスタに登録されてるものを floating window で一覧表示する。

https://github.com/tversteeg/registers.nvim
  1. AckslD/nvim-anywise-reg.lua: treesitter を使って変な位置でペーストしてもいい感じの位置にペーストしてくれる。

https://github.com/AckslD/nvim-anywise-reg.lua

検索系

検索

  1. kevinhwang91/nvim-hlslens: 検索時に今のカーソルの隣に何個目のマッチしたものかを floating で表示してくれる。とても便利。

https://github.com/kevinhwang91/nvim-hlslens
  1. haya14busa/vim-asterisk: *で今の単語を検索したときに動かなくしたりだとか、検索したときのカーソル位置を覚えてくれてたりとかする。必須。というか本体の挙動にして欲しいレベル。

https://github.com/haya14busa/vim-asterisk

置換

  1. lambdalisue/reword.vim: camel case とか snake case とか気にせずに一括置換できる。正直使ったことがないが、いつかのために入れてある。

https://github.com/lambdalisue/reword.vim
  1. haya14busa/vim-metarepeat: cgn での置換が少し便利になる。

https://github.com/haya14busa/vim-metarepeat

Grep

  1. windwp/nvim-spectre: grep ツール。基本は telescope を使うが稀に正規表現したいときにこちらを使うこともある。

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

ファイル操作系

ファイラー

  1. nvim-neo-tree/neo-tree.nvim: Lua 製の高機能ファイラー。開発が活発でよい。

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

バッファ操作

  1. wsdjeg/vim-fetch: :eとかで行数指定した形式でもファイルが開ける。

https://github.com/wsdjeg/vim-fetch
  1. famiu/bufdelete.nvim: バッファ削除でウィンドウが消えないようになる。

https://github.com/famiu/bufdelete.nvim
  1. stevearc/stickybuf.nvim: 特定のファイルタイプのウィンドウでバッファが切り替わらなくなる

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

ウィンドウ操作

  1. tkmpypy/chowcho.nvim: ウィンドウをラベルで選択できる(Easymotion みたいに)。あんまりウィンドウ開かない(多くても 4 つ)からそんない使ってはない。

https://github.com/tkmpypy/chowcho.nvim
  1. kwkarlwang/bufresize.nvim: ウィンドウを閉じたときにいい感じにレイアウトを修正してくれる。

https://github.com/kwkarlwang/bufresize.nvim

標準機能拡張系

Undo

  1. simnalamburt/vim-mundo: undo 履歴をかっこよくグラフ的に表示してくれる。私はあまり使った記憶がないけど・・・

https://github.com/simnalamburt/vim-mundo

Diff

  1. AndrewRadev/linediff.vim: 2 つの範囲選択した部分の差分を比較してくれる。重複コードとか調べるときとかも地味に便利。

https://github.com/AndrewRadev/linediff.vim

Mark

  1. chentau/marks.nvim: mark があれば sign のエリアに表示してくれる。便利。

https://github.com/chentau/marks.nvim

Fold

  1. lambdalisue/readablefold.vim: fold の表示をいい感じにしてくれる。fold は全く使わないけど一応入れている。

https://github.com/lambdalisue/readablefold.vim

Manual

  1. thinca/vim-ref: w3m などを使ってバッファー上にブラウザの結果をテキスト表示できる。英単語を調べたりするときはブラウザで調べるよりも速くて便利。

https://github.com/thinca/vim-ref
  1. folke/which-key.nvim: よく忘れるマッピングを一覧をして表示できる。Leader とかプレフィックスとしてマップしてるキーに設定すると便利。

https://github.com/folke/which-key.nvim

Tag

  1. jsfaint/gen_tags.vim: タグファイルを自動生成してくれる。LSP が出てきたおかげで利用頻度はかなり減った。

https://github.com/jsfaint/gen_tags.vim

Quickfix

  1. drmingdrmer/vim-toggle-quickfix: quickfix list と location list をトグルできるようになる。

https://github.com/drmingdrmer/vim-toggle-quickfix
  1. kevinhwang91/nvim-bqf: Quickfix が超絶使いやすくなる。特にプレビューはすごくいい。

https://github.com/kevinhwang91/nvim-bqf
  1. gabrielpoca/replacer.nvim: Quickfix 内で項目を編集できるようになって、それがバッファに反映されるようになる。

https://github.com/gabrielpoca/replacer.nvim

Session

  1. rmagatti/auto-session: セッションを自動保存してくれる。これで終了してもすぐ同じ環境立ち上げられる。

https://github.com/rmagatti/auto-session
  1. rmagatti/session-lens: セッション一覧を選択できる。私は 1 プロジェクト 1Neovim 派なので、セッションは起動時以外に切り替えることがないが一応入れておく。

https://github.com/rmagatti/session-lens

Macro

  1. zdcthomas/medit: マクロを簡単に編集できる。あまり使ってないがいざというときに必要な気もするので入れてある。

https://github.com/zdcthomas/medit

SpellCorrect

  1. Pocco81/AbbrevMan.nvim: 設定しておけばよくタイポする文字を自動修正してくれる。

https://github.com/Pocco81/AbbrevMan.nvim

Command

  1. tyru/capture.vim: コマンドの結果をバッファに書き込んでくれる。デバッグするときとかにとても便利。標準で入れて欲しいレベル。

https://github.com/tyru/capture.vim
  1. jghauser/mkdir.nvim: :w とかで新しくファイル作ろうとしたときにディレクトリがない場合は自動で作成してくれる。

https://github.com/jghauser/mkdir.nvim
  1. sQVe/sort.nvim: sort を拡張してくれる。

https://github.com/sQVe/sort.nvim
  1. yutkat/confirm-quit.nvim: 最後のウィンドウを閉じるときに確認ダイアログを出してくれる。

https://github.com/yutkat/confirm-quit.nvim

History

  1. yutkat/history-ignore.vim: 必要ないコマンドをコマンド履歴に登録しないようにする。

https://github.com/yutkat/history-ignore.vim

Terminal

  1. akinsho/toggleterm.nvim: 標準のターミナルを使いやすくしたターミナル拡張。

https://github.com/akinsho/toggleterm.nvim

Backup

  1. aiya000/aho-bakaup.vim: バックアップを取ってくれる。あまりお世話になったことはないけど保険があることに越したことはない。

https://github.com/aiya000/aho-bakaup.vim

新規機能追加系

翻訳

  1. voldikss/vim-translator: Google 翻訳とかで翻訳できるようになる。

https://github.com/voldikss/vim-translator

スクリーンショット

  1. segeljakt/vim-silicon: 選択した部分のコードを画像として出力することができる。

https://github.com/segeljakt/vim-silicon

コマンドパレット

  1. mrjones2014/legendary.nvim: VS Code のコマンドパレットのようなものが使える。全然使ってないがいつか使いこなしたい。

https://github.com/mrjones2014/legendary.nvim

メモ

  1. renerocksai/telekasten.nvim: zettelkasten スタイルのメモ管理ができる。外部コマンドに依存していないところがいい。

https://github.com/renerocksai/telekasten.nvim

バイナリエディタ

  1. Shougo/vinarise.vim: Linux でまともなバイナリエディタがないので Linux アプリを含めてもこれしか選択肢がない。個人的には Vim プラグインという枠を飛び越えてる。新作の開発が着手されたという話なので期待したい。https://github.com/Shougo/ddx.vim

https://github.com/Shougo/vinarise.vim

ブラウザ連携

  1. tyru/open-browser.vim: ブラウザと連携することができる。

https://github.com/tyru/open-browser.vim
  1. tyru/open-browser-github.vim: さらに GitHub とも連携することができる。

https://github.com/tyru/open-browser-github.vim

テンプレートによる定型文生成

  1. mattn/vim-sonictemplate: Lua 製のものでも同じような機能のものがあるが、小回りが効かなかったのでこちらを使い続けている。

https://github.com/mattn/vim-sonictemplate

アクティビティ記録

  1. wakatime/vim-wakatime: すべての自分の活動を記録したいデータ厨のために wakatime https://wakatime.com と連携できるようになる。ちなみに私は記録したいけど、特に見直さない派なのでたぶん設定したいだけ。

https://github.com/wakatime/vim-wakatime

コーディング関連

ライティング支援

  1. zsugabubus/crazy8.nvim: tabstop, shiftwidth, softtabstop, expandtabをファイルから自動で設定してくれる。

https://github.com/zsugabubus/crazy8.nvim
  1. lfilho/cosco.vim: 行末のセミコロンを入力してくれるマッピングを提供してくれる。

https://github.com/lfilho/cosco.vim

リーディング支援

  1. lukas-reineke/indent-blankline.nvim: インデントを見やすくしてくれる。

https://github.com/lukas-reineke/indent-blankline.nvim
  1. kristijanhusak/line-notes.nvim: その行にメモを設置できる。

https://github.com/kristijanhusak/line-notes.nvim

コメント

  1. numToStr/Comment.nvim: 機能が多いコメントアウトプラグイン。

https://github.com/numToStr/Comment.nvim
  1. s1n7ax/nvim-comment-frame: ヘッダーコメントを作ってくれるプラグイン。けどいつも手打ちしちゃうのはなぜだろう・・・・?

https://github.com/s1n7ax/nvim-comment-frame
  1. LudoPinelli/comment-box.nvim: かっこいい線でヘッダーコメントを作ってくれるプラグイン!

https://github.com/LudoPinelli/comment-box.nvim
  1. danymat/neogen: IDE みたいに関数ヘッダーにアノテーションを自動生成してくれる。Comment.nvim でもできるみたいだがどっちがいいのか評価中

https://github.com/danymat/neogen

括弧

  1. andymass/vim-matchup: treesitter にも対応している括弧をマッチさせるプラグインの決定版。

https://github.com/andymass/vim-matchup
  1. windwp/nvim-autopairs: 括弧を自動で閉じてくれる。

https://github.com/windwp/nvim-autopairs
  1. windwp/nvim-ts-autotag: HTML タグも自動で自動で閉じてくれる。

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

コードジャンプ

  1. rgroli/other.nvim: 条件に一致した複数のファイル間をジャンプできる。例えばコードとテストコード間のファイルを行き来するなど。

https://github.com/rgroli/other.nvim

テスト

  1. klen/nvim-test: 複数の言語に対応しているテストランナー

https://github.com/klen/nvim-test
  1. michaelb/sniprun: コードの部分実行ができるランナー

https://github.com/michaelb/sniprun

タスクランナー

  1. yutkat/taskrun.nvim: シェルのコマンドを toggleterm で実行できるようにする。

https://github.com/yutkat/taskrun.nvim

Lint

  1. jose-elias-alvarez/null-ls.nvim: 機能が多い汎用 Language Server 。私は Linter, formatter としてしか使ってないが他にもいろいろできる。有名なのだと mattn/efm-langserver などがある。

https://github.com/jose-elias-alvarez/null-ls.nvim

Formatter

  • フォーマッター自体は null-ls.nvim を使っている
  1. gpanders/editorconfig.nvim: Editorconfig 用

https://github.com/gpanders/editorconfig.nvim
  1. ntpeters/vim-better-whitespace: 行末の空白スペースを削除してくれる。

https://github.com/ntpeters/vim-better-whitespace

コードアウトライン

  1. stevearc/aerial.nvim: nvim-lsp を使ってコードアウトライン(そのファイルにあるクラスや関数の一覧)を作ってくれる。

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

スニペット

  1. L3MON4D3/LuaSnip: 設定が難しいがすごく高機能なスニペット。

https://github.com/L3MON4D3/LuaSnip
  1. kevinhwang91/nvim-hclipboard: スニペット使うと意図せずクリップボードが書き換わってしまうのを防いでくれる。

https://github.com/kevinhwang91/nvim-hclipboard

スニペット定義

  1. rafamadriz/friendly-snippets: スニペット定義ファイル。

https://github.com/rafamadriz/friendly-snippets

プロジェクト

  1. ahmedkhalf/project.nvim: プロジェクトを切り替えられる。私は 1 プロジェクト 1Neovim 派なのでプロジェクトルートの切り替えにしか使っていない。

https://github.com/ahmedkhalf/project.nvim
  1. klen/nvim-config-local: プロジェクトローカルな設定ファイルを読み込むことができる。私は.nvimというディレクトリに格納するようにしている。

https://github.com/klen/nvim-config-local

Git

  1. TimUntersberger/neogit: 高機能 Git クライアント。

https://github.com/TimUntersberger/neogit
  1. sindrets/diffview.nvim: neogit と連携するとかっこいい diff が表示できるようになる。

https://github.com/sindrets/diffview.nvim
  1. akinsho/git-conflict.nvim: コンフリクトしたときの表示をわかりやすくする。

https://github.com/akinsho/git-conflict.nvim
  1. lewis6991/gitsigns.nvim: git の状態をかっこよく sign として表示する。

https://github.com/lewis6991/gitsigns.nvim
  1. yutkat/convert-git-url.vim: git の URL 形式をgit@github.comとhttps://github.comとで相互に切り替える。

https://github.com/yutkat/convert-git-url.vim

Git コマンドからの連携

  1. rhysd/committia.vim: シェルからgit commitしたときにかっこいい感じでコミット用にカスタマイズされた画面を起動してくれる。

https://github.com/rhysd/committia.vim
  1. hotwatermorning/auto-git-diff: シェルから git rebaseしたときにかっこいい感じでリベース用にカスタマイズされた画面を起動してくれる。

https://github.com/hotwatermorning/auto-git-diff

GitHub 連携

  1. pwntester/octo.nvim: gh コマンド的なことが Neovim 上でできるようになる。

https://github.com/pwntester/octo.nvim

デバッグ

  1. sentriz/vim-print-debug: printf デバッグが捗る。

https://github.com/sentriz/vim-print-debug

デバッガー

  1. mfussenegger/nvim-dap: Neovim でも UI でデバッガーしたいってときに使う。思いの外ちゃんと動くが、DAP がちゃんと動いていることを確認できるまで多少がんばる必要がある。

https://github.com/mfussenegger/nvim-dap
  1. rcarriga/nvim-dap-ui: nvim-dap の UI をイケてる感じにしてくれる。

https://github.com/rcarriga/nvim-dap-ui
  1. theHamsta/nvim-dap-virtual-text: DAP の結果を virtual text で表示してくれる。

https://github.com/theHamsta/nvim-dap-virtual-text
  1. nvim-telescope/telescope-dap.nvim: DAP の telescope 連携。

https://github.com/nvim-telescope/telescope-dap.nvim

REPL

  1. hkupty/iron.nvim: Neovim 上で REPL することができる。REPL プラグインは実はたくさんあるが Lua 製だとこれがメジャーだと思われる。

https://github.com/hkupty/iron.nvim

言語固有プラグイン

treesitter や LSP 側に寄せているので言語固有のプラグインはそんなに必要ないが足りない部分を補ってくれるものは入れてある。

JavaScript

  1. vuki656/package-info.nvim: package.json のパッケージが最新かどうかわかる。

https://github.com/vuki656/package-info.nvim
  1. bennypowers/nvim-regexplainer: ポップアップで正規表現を解説してくれる。

https://github.com/bennypowers/nvim-regexplainer

Rust

  1. simrat39/rust-tools.nvim: Rust に特化したいくつかの機能が入っている。

https://github.com/simrat39/rust-tools.nvim

Markdown

  1. iamcco/markdown-preview.nvim: Markdown をブラウザ上でプレビューしてくれる。スクロールも追尾してくれる。

https://github.com/iamcco/markdown-preview.nvim
  1. SidOfc/mkdx: markdown 用の便利な設定が詰まってる。正直あまり使いこなせておらずお節介なことも多いので結構なマッピングをオフにしてる。

https://github.com/SidOfc/mkdx
  1. dhruvasagar/vim-table-mode: テーブルを簡単に綺麗に作成できる。すごく便利。これがないとテーブル書けないレベル。

https://github.com/dhruvasagar/vim-table-mode

SQL

  1. alcesleo/vim-uppercase-sql: SQL を書いたら大文字にしてくれる。

https://github.com/alcesleo/vim-uppercase-sql

CSV

  1. chen244/csv-tools.lua: CSV をカラムごとに色付けしてくれる。色付けする範囲も絞れるので重くなりにくい。

https://github.com/chen244/csv-tools.lua

Log

  1. MTDL9/vim-log-highlighting: 一般的なログファイルを色付けしてくれる。

https://github.com/MTDL9/vim-log-highlighting

Neovim Lua 開発用

  1. bfredl/nvim-luadev: REPL のような感じで Neovim Lua を開発できる。一応入れている。

https://github.com/bfredl/nvim-luadev
  1. wadackel/nvim-syntax-info: 今カーソルがある場所のシンタックス情報を virtual text で表示してくれる。

https://github.com/wadackel/nvim-syntax-info

さいごに

ざっと紹介しましたが量が多くて、くぅ〜疲れました w (文章を書くというよりも連番振るのとリンク貼るの)

ちなみに 2022 年の春に使っていたものをまとめただけで今後更新するつもりはないので、 私がなにを使っているか知りたい場合はこちらをご覧ください 🙇

https://github.com/yutkat/dotfiles/blob/main/.config/nvim/lua/rc/pluginlist.lua

Discussion

ログインするとコメントできます