193
163

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VimAdvent Calendar 2019

Day 2

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

Last updated at Posted at 2019-12-01

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, ctrlp.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.
shell:デフォルトの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.

継続的に調査する

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

193
163
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
193
163

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?