Vim IDE

いま現在使っているvimプラグインについて。随時更新。

Vim version 8.0.1400

  • dein
  • NERDTree
  • fzf.vim
  • UltiSnips
  • vim-test
  • vim-dispatch
  • QuickRun
  • yanktmp
  • vim-fugitive
  • vim-autotag
  • gtags
  • auto-gtags
  • vim-php-namespace

dein

Vimプラグインマネージャ。読みは「ダイン」。NeoBundleからの乗り換え。Vimの起動がめちゃくちゃ速くなった。

Shougo/dein.vim: Dark powered Vim/Neovim plugin manager

NERDTree

ファイルブラウザ。ファイル探すときはfzf.vimを使ってるけど、ディレクトリ操作したりファイル名思い出せないときはNERDTreeを使う。<F12>で右ペインに表示されるようにしている。vimの中にいながらディレクトリ作成、ファイル削除ができる。

scrooloose/nerdtree: A tree explorer plugin for vim.

fzf.vim

fuzzy finderであるfzfコマンドののvimラッパー。CtrlPからの乗り換え。絞り込みはCtrlPよりも速い。

junegunn/fzf.vim: fzf vim

fzfを使う

vim8 + dein + HomeBrew で使うときのセットアップ方法。コマンドをインストールしてruntimepathを設定しないといけない。

fzfコマンドとfdコマンドをインストールする。fdfindの代替コマンド。.gitignoreを参照してくれるので不要なファイルが検索結果に出力されない。vimでfzf.vimを使うときはnode_modules/の下などは無視したいのでfdを入れる。

$ brew install fzf fd
[[plugins]]
repo = 'junegunn/fzf.vim'

Homebrewでfzfを入れていれば junegunn/fzf は不要っぽい。そのかわり rtp の追加を忘れないように。最初、コマンドのパスを追加するのかと思ってはまった。

rtp+=/usr/local/opt/fzf

UltiSnips

スニペット管理。NeoCompleteを使わなくなったので一緒にNeoSnippetも使わなくなった。次に触ったのはsnipMateだったけど、なぜかPHPのインデントが壊れる現象があったので最終的にUltiSnipsを使い始めた。ちなみに発音は「アルティスニップス」みたいな雰囲気らしい。

https://github.com/SirVer/ultisnips

vim-test

いろんな言語、フレームワークのTest Runner。しばらくQuickRunでphpunitrspecを実行してたんだけど、vim-testは無設定でどんなテストでも動くので乗り換えた。 一番気に入ってるコマンドは:TestLast。最後に実行したテストを再実行してくれる。テストクラスのバッファにいなくても:TestLastだけで再実行してくれる。このコマンドを<leader>rにマップしてる。QuickRunで同じ事をやる方法がわからなかった。 あとvim-dispatchtmuxの連携が最強過ぎる。

https://github.com/janko-m/vim-test

vim-php-namespace

PHPuse文を自動生成してくれる。地味に便利というかこれがないとPHP書けない。ctagsを使ってるようなのでvim-autotagも必須。

https://github.com/arnaud-lb/vim-php-namespace

vim-autotag

ファイル保存時にctagsを更新してくれる。どうやらctagの仕様上、定義の追加しかできないらしい。なのでクラスやメソッドを削除したときはコマンドを再実行しないといけない。しかし追加だけでそんなに困ったことはない。差分更新なので速度も速い。vim-php-namespaceを使うためにも必須。

https://github.com/craigemery/vim-autotag

gtags

GNU Globalを使うためのプラグイン。最近あまり使ってない。ctagsとfzf.vimgrepがあればあまり困らない。 まれにメソッドの呼び出し元を探したいことがあるのでGtags -rのために入れてる。

https://github.com/vim-scripts/gtags.vim

auto-gtags

gtagsを自動更新してくれるやつらしい。ちゃんと動いてるのか不明。

https://github.com/zebult/auto-gtags.vim

yanktmp

別プロセスのvim同士でコピーペーストできる。tmuxを使っていると別ウインドウでコピーペーストしたいときがあるので入れている。

https://github.com/vim-scripts/yanktmp.vim

vim-fugitive

vimからGitを操作する。いつもvimの外でgitコマンドを使ってしまうのでそれほど使用頻度は高くない。

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

vim-dispatch

vimの非同期実行プラグインvimは長らく非同期実行が弱いと言われていてそれに対する解決策(vimprocなど)も出ていたようだけど、このvim-dispatchは tmux や screen, iTerm などと連携して非同期を実現してるみたい。難しいことはあんまりよくわからない。 tmux内で:Dispatch でコマンド実行するとtmuxウインドウが分割されて非同期でコマンドが実行される。非同期で動いているので実行中にvimの操作がロックされることもない。実行が終われば出力結果はquickfixなどに取り込まれる。 vim-testはこのvim-dispatchに対応していて非同期でテストが実行される。

紹介用のビデオが傑作すぎるのでぜひ見てもらいたい。 Introducing dispatch.vim on Vimeo

https://github.com/tpope/vim-dispatch