Vim IDE
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よりも速い。
fzfを使う
vim8 + dein + HomeBrew で使うときのセットアップ方法。コマンドをインストールしてruntimepath
を設定しないといけない。
fzf
コマンドとfd
コマンドをインストールする。fd
はfind
の代替コマンド。.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でphpunit
やrspec
を実行してたんだけど、vim-testは無設定でどんなテストでも動くので乗り換えた。
一番気に入ってるコマンドは:TestLast
。最後に実行したテストを再実行してくれる。テストクラスのバッファにいなくても:TestLast
だけで再実行してくれる。このコマンドを<leader>r
にマップしてる。QuickRunで同じ事をやる方法がわからなかった。
あとvim-dispatch
とtmux
の連携が最強過ぎる。
https://github.com/janko-m/vim-test
vim-php-namespace
PHPのuse
文を自動生成してくれる。地味に便利というかこれがないと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.vimとgrep
があればあまり困らない。
まれにメソッドの呼び出し元を探したいことがあるので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