Help us understand the problem. What is going on with this article?

Vimプラグイン"の"カテゴリまとめ

Vimのプラグインがたくさんあってなにがどうなっているかの整理できていない!という人向けによくあるプラグインのカテゴリをまとめてみました。プラグインを見つけた際にどこらへんに該当するかなーと判断の参考にしてもらえればと思います。

はじめに

  • 対象はVim初心者から中級者一歩手前くらいを想定しています。
  • プラグイン自体の説明はあまりするつもりはないので、リンクのGitHubのREADMEを読むなり使ってみるなりしてみてください。
  • 表の中の四角括弧[]は機能が重複しているプラグインです。同じようなプラグイン複数入れると良からぬことが起こるのでいずれか一つを試すのがよいと思います。
  • 個人的によく使う特におすすめのものは★を書いておきます。(ちなみにNeovim使いです)

プラグインのカテゴリ

プラグインマネージャー

まずはプラグインをいれるためのプラグイン(GitHubからダウンロードしたり、読み込んだりしてくれるもの)をいれます。

いろいろ種類はありますが、

  • vim-plug: 世界的に利用者が多くシンプル
  • dein.vim: 日本人に使っている人が多く、高速

を選んでおくと無難かと思います。

標準機能拡張系

ここでは、Vimの標準機能を拡張するプラグインをまとめます。

カテゴリ(説明) 代表的なプラグイン
移動改善 (Vimの醍醐味でもあるスッと移動する機能を拡張する) [vim-easymotion, vim-sneak], quick-scope★
選択 (文字選択をスマートに行う) vim-expand-region★, vim-multiple-cursors
検索 vim-anzu★, vim-asterisk★
全体検索(今開いているファイル以外からも検索) vim-grepper★
Highlight (同じ単語を識別しやすくする) vim-quickhl★, [vim-illuminate, coc-highlight]
ヤンク(コピー) [yankround.vim, nvim-miniyank]
Undo undotree
ウインドウ (画面分割等のウィンドウを拡張する) winresizer, vim-choosewin
バッファ操作 vim-bufonly, vim-bbye
コマンド (コマンドモードの拡張) suda.vim, CmdlineComplete, capture.vim★
編集支援 (括弧を入れ替えたり、単語をクオートでくくったりできる) [vim-sandwich★, vim-surround]
整形支援 vim-easy-align★, vim-table-mode, vim-partedit
行結合、分割 vim-jplus, splitjoin.vim
Diff linediff.vim★
Mark vim-signature
Manual (Helpを引いたり) vim-ref★, vim-cheatsheet
Tag (タグジャンプ用のタグを管理する) vim-gutentags
Session (Vimのセッションを管理して以前の状態を復元したりする) vim-obsession
Quickfix (ビルド後などに使用する下の方に表示されるウィンドウ) vim-qf, quickr-preview.vim★
ファイラー (ファイル一覧からファイルを選択したりするやつ) [defx.nvim, fila.vim, vim-dirvish]

レイアウトカスタマイズ系

ここでは、主にVimの見た目をカスタマイズするプラグインをまとめます。

カテゴリ(説明) 代表的なプラグイン
スタートメニュー (Vimを起動したときにメニューを表示できるようにする) vim-startify★
ColorScheme (Vimの色を変更する。いろいろなプラグインに対応している方が望ましい。そうしないとプラグインを追加するごとに色を調整する必要がでてくる) [gruvbox-material★, iceberg.vim]
Statusline (Vimの下に表示される情報を出すバー) lightline.vim★, vim-airline

機能追加系

ここでは、Vimに本来備わっている以外の機能を追加したプラグインをまとめます。

カテゴリ(説明) 代表的なプラグイン
ファイル切り替え vim-buffergator, vim-xtabline★
メモ機能 memolist.vim★
ファジーファインダー (曖昧検索でファイルやコマンドを検索する) [fzf.vim★, denite.nvim, ctrp.vim, vim-clap]
Git操作 gina.vim, vim-fugitive, git-messenger.vim, committia.vim

コーディング支援系

主にプログラミングをする際の支援をしてくれるプラグインたちです。

カテゴリ(説明) 代表的なプラグイン
自動補完 [coc.nvim★, asyncomplete.vim, deoplete.nvim]
LSP [coc.nvim★, vim-lsp, LanguageClient-neovim]
ライティング支援 nerdcommenter★, vim-better-whitespace, vim-autoformat
リーディング支援 indentLine
コードジャンプ [vista.vim, tagbar], vim-altr★
タスクランナー [vim-test, vim-dispatch, asyncrun.vim, vim-quickrun]
Checker (最近はLSPにて代替が可能な場合が多いため使用しないこともある) ale
括弧可読支援 rainbow_parentheses.vim, vim-matchup
括弧入力支援 [lexima.vim, coc-pairs★, delimitMate]
スニペット (定型文入力支援) [coc-snippets★, neosnippet.vim, ultisnips], sonictemplate-vim
プロジェクト管理 vim-rooter, vim-localvimrc

プログラミング言語別プラグイン

Vim(だいたいのエディタでもそうですが)では、各プログラミング言語ごとに専用のプラグインが存在し、言語固有の便利機能を提供していることが多いです。シンタックス(コードの色付け)の設定だけが必要ならvim-polyplotを入れれば大抵の言語は適切に色がついた状態で表示できます。

カテゴリ(説明) 代表的なプラグイン
Markdown [previm, markdown-preview.nvim★]
言語ごとのシンタックス設定 vim-polyglot(いろいろな言語のシンタックスがセットになっている。 ただしトラブルことも多い気がするので特定の言語しか書かない場合は個別にインストールするほうがよい)

さいごに

プラグインを選ぶ際のポイント

  • 継続的にメンテナンスされているか
    • Vim scriptは比較的簡単に書けるため最初作ったまま放置されるパターンも多い
      • プラグイン作者のGitHubのアクティビティなども参考にする
    • Vim本体の機能に追従していっているか
      • 機能追加でそのプラグイン自体が不要となるケースもある
      • 最近話題の機能を取り込めているか
        • 非同期実行ができるようになった(2016-)
        • LSPが出てきた(2016-)
        • ポップアップ(floating window)ができるようになった(2019)
  • そのプラグインよりメジャーなプラグインがないか調べてみる
    • あまりGitHubスターはあてにならない。古いプラグインのほうが星がたくさんついていることが多いため。
    • プラグインの移り変わりは激しいので(検索ワードとしては、xxx alternativeとかでよい)

プラグインを管理する際のポイント

  • プラグインを入れること自体は悪いことではないのでどんどん試して入れるとよいと思う。ただし、ただ入れて放置して管理していない状態にはならないように定期的に見直すこと。
  • たくさんいれるとプラグイン同士が干渉することがある(主にマッピングがかぶって動かなくなるなど)
    • トラブったときはプラグインを全部オフにして徐々に有効化してあたりをつけていくのがよい
  • たくさんいれすぎると起動が遅くなることがある

    デフォルトのvimよりもどのくらい遅くなっているか確認するワンライナー
    echo "scale=3; $(vim --startuptime /tmp/stime_mine.log -c 'quit' > /dev/null && tail -n 1 /tmp/stime_mine.log | cut -d ' ' -f1) / $(vi -u DEFAULTS --startuptime /tmp/stime_def.log -c 'quit' > /dev/null && tail -n 1 /tmp/stime_def.log | cut -d ' ' -f1)" | bc | xargs -i echo {}x slower your Vim than the default.
    
    デフォルトのneovimよりもどのくらい遅くなっているか確認するワンライナー
    echo "scale=3; $(nvim --startuptime /tmp/stime_mine.log -c 'quit' > /dev/null && tail -n 1 /tmp/stime_mine.log | cut -d ' ' -f1) / $(vi -u DEFAULTS --startuptime /tmp/stime_def.log -c 'quit' > /dev/null && tail -n 1 /tmp/stime_def.log | cut -d ' ' -f1)" | bc | xargs -i echo {}x slower your Vim than the default.
    

継続的に調査する

プラグインの移り変わりは激しいので定期的に情報を取得する必要があります。以下に私がよく使っているサイトのリンクを記載しておきます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away