LeavaTailの日記

LeavaTailの日記

Linuxエンジニアを目指した技術者の備忘録

Vimの導入プラグインを見直す

概要

deinプラグインマネージャで21個Vimプラグインをインストールしている環境に対して、見直しを実施した。

Vimの基本機能で代用できるものを削除していった結果、12個までプラグインを削減することができた。

はじめに

著者は4年以上Vimを使っているが、設定ファイルがブラックボックス化してしまっている。
そこで、使っていないプラグインなど忘れられているプラグインなどあると思うので、2019年のうちに設定ファイルを整理してみたいと思う。 今回は、導入するプラグインを必要最低限に絞って素のVimを楽しむことにする。

本記事は、vimrcのプラグイン周りの整理したときの記録を残す。

見直し前の環境

1年前からVimを含めて設定ファイルはdotfilesにまとめている。導入自体は簡単で、ワンコマンドでデプロイできるようにしている。

github.com

整理前のvimは下記の状態になっていて、ステータスラインやアンドゥツリーなどIDEっぽくしている。

整理する前のvim

ここで、使用しているVimプラグインを抜粋してみる。 deinを利用してプラグインを管理している。

プラグイン 概要
Shougo/dein.vim Vimプラグインマネージャ
Shougo/vimproc.vim Vimを非同期処理
tomasr/molokai カラースキーム
Shougo/neosnippet-snippets スニペット定義ファイル
Shougo/context_filetype.vim 動的にfiletypeを判定する
nathanaelkane/vim-indent-guides インデントの可視化
ujihisa/neco-look 英単語を補完
sjl/gundo.vim アンドゥツリーの表示
Lokaltog/vim-easymotion キータッチで目的行に移動する
Shougo/vimshell Vimからシェルを起動する
scrooloose/nerdtree ディレクトリツリーを表示
ryanoasis/vim-devicons ファイルタイプのアイコンを表示する
roxma/nvim-yarp deopleteの依存パッケージ
roxma/vim-hug-neovim-rpc deopleteの依存パッケージ
airblade/vim-gitgutter Git差分を左端に表示する
mbbill/undotree アンドゥツリーを表示(gundoできない環境用)
itchyny/lightline.vim ステータスラインをカスタマイズ
Shougo/neocomplete.vim コード補完(deopleteできない環境用)
Shougo/deoplete.nvim コード補完
Shougo/neosnippet スニペット機能
cespare/vim-toml TOMLのシンタックス

プラグインマネージャ

現在、deinを使用しているが他のプラグインマネージャに移行するか検討する。

  • Vundle
  • vim-pathogen
  • vim-plug
  • NeoBundle

ただ、今更プラグインマネージャを入れ替えるのは手間なのでdeinのままで進める。

プラグイン 変更点 理由
Shougo/dein.vim なし 移行理由がなかったため

カラースキーム

これまでmolokaiを使用してきたが、私にはすこし黒が強すぎるので他のcolorを試してみる。 http://vimcolors.com/ から、しばらくはonedarkを使用することにした。

プラグイン 変更点 理由
tomasr/molokai ntk148v/vim-horizonへ移行 気分転換

dev.classmethod.jp

LSP

LSP (Language Server Protocol) は、Microsoftが設計したプロトコルであり、エディタに必要な機能を実現するためのやり取りを規定している。

qiita.com

VimでLSPを利用する場合には、プログインを使う方法が最も簡単だと思われる。

ここでは、拡張機能の豊富な点からcoc.nvimを利用する。

プラグイン 変更点 理由
neoclide/coc.nvim 追加 LSPプラグインの中で、拡張機能に優れているため

検索

fzf (fuzzy finder) がコマンドラインであいまい検索ができるツールとなっている。

wonderwall.hatenablog.com

プラグイン 変更点 理由
junegunn/fzf 追加 あいまい検索を使うため (fzf本体)
junegunn/fzf.vim 追加 検索時の入力ミスが目立ってきたため

表示

プラグイン 変更点 理由
kshenoy/vim-signature 追加 Vimシグネチャ機能を使えていないため、導入として
machakann/vim-highlightedyank 追加 ヤンクの範囲漏れが目立ってきたので

プラグイン削除

Vimの標準コマンドで代用できるプラグインの削除

NERDTree は、ディレクトリツリーを表示してくれるプラグインである。 現状は、起動時に自動でディレクトリを表示させるようにして、開発効率の貢献をしてくれたと思っている。 しかし、:e .ディレクトリ表示ができるらしいので、あえてこのプラグインを削除して運用してみることにした。

VimShellは、Vimからシェルを起動するプラグインである。 ちょっとしたプログラムやスクリプトを確認するときに約に立ってくれたプラグインでもあるが、:terminalで代用できることもありいったん削除することにした。

deopleteは補完ツールプラグインの一つで、入力した文字から動的に補完バーを表示してくれる。 こちらもかなりお世話にになっているプラグインで、neco-lookと組み合わせて開発効率にかなり貢献してくれた。 しかし、VimにはデフォルトでCtrl-X補完機能が備わっているため、しばらくはそちらで運用してみることにした。

プラグイン 変更点 理由
scrooloose/nerdtree 削除 :e .で代用できるため
Shougo/vimshell 削除 :terminalで代用できるため
Shougo/neocomplete.vim 削除 Ctrl-X補完モードで代用
Shougo/deoplete.nvim 削除 Ctrl-X補完モードで代用
Shougo/neosnippet-snippets 削除 deopleteを削除するため
ujihisa/neco-look 削除 deopleteを削除するため
Shougo/neosnippet 削除 deopleteを削除するため
roxma/nvim-yarp 削除 deopleteを削除するため
roxma/vim-hug-neovim-rpc 削除 deopleteを削除するため

最近あまり使用していなかったプラグインの削除

context_filetypeは動的にfiletypeを判定してくれるツールで、ファイル内に複数のfiletypeがあるような言語での開発などに大いに活躍してくれる。 しかし、現在ファイルシステムの開発やCプログラムを触っている私には、そのような機会がなくあまり恩恵が受けられなかったので削除して運用する。

vim-indent-guidesは、インデントを可視化するプラグインで、プログラムの深さを意識させてくれる。 しかし、タブ文字派に転職したことでタブ文字からインデントを意識できるようになったので削除して運用する。

gundoは、アンドゥツリーを表示するプラグインであり、戻したりやり直したりを容易にできるプラグインである。 しかし、自分はこの機能を忘れて普通にアンドゥやリドゥを使っていることが多かったので削除して運用する。

vim-tomlはTOML用のシンタックスを提供してくれるプラグインであるが、あまりTOMLファイルを書かないので必要になったときにインストールすることにして、今回は削除して運用する。

プラグイン 変更点 理由
Shougo/context_filetype.vim 削除 あまり使わないため
nathanaelkane/vim-indent-guides 削除 あまり使わないため
sjl/gundo.vim 削除 あまり使わないため
mbbill/undotree 削除 あまり使わないため
cespare/vim-toml 削除 あまり使わないため

見直し後の環境

最終的に導入しているプラグインは以下のようになった。

プラグイン 概要
Shougo/dein.vim Vimプラグインマネージャ
Shougo/vimproc.vim Vimを非同期処理
ntk148v/vim-horizon カラースキーム
Lokaltog/vim-easymotion キータッチで目的行に移動する
neoclide/coc.nvim LSPプラグイン
airblade/vim-gitgutter Git差分を左端に表示する
itchyny/lightline.vim ステータスラインをカスタマイズ
ryanoasis/vim-devicons ファイルタイプのアイコンを表示する
junegunn/fzf あいまい検索を使うため (fzf本体)
junegunn/fzf.vim fuzzy finder
kshenoy/vim-signature シグネチャの位置をマークする
machakann/vim-highlightedyank ヤンク範囲を一時的にハイライトする

整理前と比べて表示の部分もすっきりとした感じになった。

2022年現在のNeoVim

おわりに

今回はVimの使ってなかったプラグインの削除をして、vimrcの整理をした。 しばらくは、必要最低限度のプラグインで運用していき必要になったら追加していくようにする。

変更履歴

  • 2019/12/02: 記事公開
  • 2022/02/27: 2022年用に更新
  • 2022/06/05: デザイン修正

参考