数年ぶりに Vim 環境を整理しなおしたのでまとめ

ここ 2 年くらいはガッツリ Swift エンジニアだったのもあって、わりと Vim から離れてたわけなんですけども、いまアプリ開発自体は担当しなくなって最近は Ruby/PHP 触る時間が増えてきて、まあ Xcode と比べるとだいぶ（自分の）環境が貧弱で不便だし、ここ数年で大きな変化があったっぽい感じなのでプラグインまわりをモダンな環境に移行しはじめてます。なお、この記事には Ruby や PHP に特化した話題は出てこない模様。

# neovim

いきなりだけど [neovim](https://neovim.io/) にしました。neovim のほうが [deoplete](https://github.com/Shougo/deoplete.nvim) とか [denite](https://github.com/Shougo/denite.nvim) とか先進的なプラグインのサポートが良さそうと思ったのが理由です。

2 年くらい前に触った時は、日本語入力してると文字化けしていくという謎の現象があったり、パフォーマンスで気になるところがあって移行しなかったのですけど、今回試した 0.3.1 だと特に気になる点もなくて快適でした。

# Plugins

まずは「あ、これ一度も使ってないや」ってやつを削除しまくってから（大事）、もうメンテされてない古いやつを移行したりとかなんとか。

とりあえず主に使ってるプラグインを列挙します。

## Shougo/dein.vim

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

パッケージ管理のプラグイン。これがないと始まらない。

## Denite 関連

https://github.com/Shougo/denite.nvim
https://github.com/Shougo/neomru.vim

Denite ってなんて言えばいいんですかね。検索のインターフェイス。バッファの切替やファイルオープンが高速にできるやつです。neomru は denite 用に「最近使ったファイル」を検索できるようにしてくれる。

## git まわり

### tpope/vim-fugitive
https://github.com/tpope/vim-fugitive

git のコマンド実行をエディタから出ないでできる。前は [git-vim](https://github.com/motemen/git-vim/) を使ってたけど、blame くらいしか使わなかったかな…結局コマンドラインのほうが慣れてるという。後述する rhubarb が便利なので乗り換えた。

### tpope/vim-rhubarb
https://github.com/tpope/vim-rhubarb

fugitive を拡張するためのプラグイン。github で管理しているファイルを開いてから `:Gbrowse` をすると、なんと github.com 上の該当のファイルをブラウザで開いてくれてプレビューできる。VISUAL モードで選択してからだとアンカーリンクにもなる。

仕事だと github 上のリンクでポインタを示すことが結構あるんでこれはだいぶ捗りそう。

### airblade/vim-gitgutter
https://github.com/airblade/vim-gitgutter

sign の領域に git のステータスを表示してくれる。追加・削除・変更したところがすぐわかる。

![3. tmux 2018-09-09 21-10-42.png](https://qiita-image-store.s3.amazonaws.com/0/3336/5ab71f89-4034-4af5-57b6-cb65163c458b.png)

### vim-scripts/git-commit
https://github.com/vim-scripts/git-commit

`git commit` してコミットメッセージを編集する時に、`git diff` の内容も一緒に見れるようにしてくれるプラグインです。なにを変更したのかわかるので便利。

## 補完まわり

### Shougo/deoplete.nvim
https://github.com/Shougo/deoplete.nvim
https://github.com/Shougo/neoinclude.vim
https://github.com/Shougo/neosnippet.vim
https://github.com/Shougo/neosnippet-snippets

neocomplete から乗り換えて deoplete へ。なにが変わったのか正直よくわからないのだけど…安定してます。neosnippet も素のままで十分環境がよくなる。

まだ言語ごとに特化した補完プラグインが選定できてないのでそれについてはまた今後。

## Raimondi/delimitMate
https://github.com/Raimondi/delimitMate

カッコやクォーテーションを入力したら閉じカッコとかを補完してくれる。こういうの、導入前は「余計なことされたら邪魔そう」とか思う方なんだけど、すくなくとも delimitMate はまったく手放せない存在になっている。

## w0rp/ale
https://github.com/w0rp/ale

lint 結果を逐一報告してくれるプラグイン。PHP を書いてるとセミコロンを忘れる事故が多発するんだけど、こいつのおかげで syntax error に悩まされることはなくなりそうです。

![3. tmux 2018-09-09 21-32-44.png](https://qiita-image-store.s3.amazonaws.com/0/3336/52aca063-9ad0-f6b9-5e66-d4bc599f606e.png)

以前は [syntastic](https://github.com/vim-syntastic/syntastic) を使ってたんだけど、ファイルを自動保存してるとチェックしてくれないことと、ale のほうが動作速度が快適のようなので乗り換えました。

## thinca/vim-localrc
https://github.com/thinca/vim-localrc

`.local.vimrc` てファイルを置いとくと、このファイルがあるディレクトリ以下のファイルを開いた時に内容が適用される。プロジェクトごとの設定とか管理するのに使ってます。

## vim-scripts/table_format.vim
https://github.com/vim-scripts/table_format.vim

テキストを整形してくれる。これも長年愛用しているプラグイン。

|![3. tmux 2018-09-09 21-43-50.png](https://qiita-image-store.s3.amazonaws.com/0/3336/a7d7896a-d1f0-60e3-b2ec-7bc47bba8db6.png)|![3. tmux 2018-09-09 21-44-05.png](https://qiita-image-store.s3.amazonaws.com/0/3336/c468ad7f-143b-37dd-8804-43e6a1228d39.png)|
|:--:|:--:|
|実行前|実行後