VimからPHPUnitを実行する

必要なもの

quickrun
vimproc

quickrunのインストール

VundleでVimプラグインを管理している場合は簡単。

.vimrcに

Bundle 'git://github.com/thinca/vim-quickrun'
Bundle 'git://github.com/karakaram/vim-quickrun-phpunit'

を追加し、

:BundleInstall

するだけ。

vimprocのインストール

.vimrcに

Bundle 'git://github.com/Shougo/vimproc'

を追加し、

:BundleInstall

続いてコンパイルを行う。

 $ cd $HOME/.vim/bundle/vimproc/
 $ make -f make_unix.mak

 .vim/bundle/vimproc/autoload/ の下に vimproc_unix.so ができていればOK
 $ ls -la $HOME/.vim/bundle/vimproc/autoload/vimproc_unix.so
 -rwxr-xr-x. 1 keynodes wheel 19354  8月 25 01:24 2012 /home/keynodes/.vim/bundle/vimproc/autoload/vimproc_unix.so

quickrunの設定

ここからが本題
$ vim $HOME/.vim/userautoload/quickrun.vim
http://www.karakaram.com/vim/quickrun-phpunit/を参考に、コメントを適度に追加

"--------------------------------------------------
" コマンドのグループ化
"--------------------------------------------------
augroup QuickRunPHPUnit
    " グループのコマンドを初期化
    autocmd!
    " BufWinEnter バッファがウィンドウに表示された後
    " BufNewFile  存在しないファイルの編集を開始する
    "  => *Test.php 新規/編集で開いた時、filetype を phpunit にセットする
    autocmd BufWinEnter,BufNewFile *Test.php set filetype=phpunit
augroup END

"--------------------------------------------------
" quickrun設定
"--------------------------------------------------
let g:quickrun_config = {}
let g:quickrun_config['_'] = {}
" runnerにvimprocを設定。phpunitの実行中にVimがフリーズしなくなる
let g:quickrun_config['_']['runner'] = 'vimproc'
let g:quickrun_config['_']['runner/vimproc/updatetime'] = 100

"--------------------------------------------------
" filetype:phpunit の時の設定
"--------------------------------------------------

"--------------------------------------------------
" 通常の表示(横分割して結果表示)
"let g:quickrun_config['phpunit'] = {}
"let g:quickrun_config['phpunit']['outputter/buffer/split'] = 'vertical 35'
"let g:quickrun_config['phpunit']['command'] = 'phpunit'
"let g:quickrun_config['phpunit']['cmdopt'] = ''
"let g:quickrun_config['phpunit']['exec'] = '%c %o %s'
"--------------------------------------------------

"--------------------------------------------------
" ステータスラインの下に結果を表示
let g:quickrun_config['phpunit'] = {}
let g:quickrun_config['phpunit']['outputter'] = 'phpunit'
let g:quickrun_config['phpunit']['command'] = 'phpunit'
let g:quickrun_config['phpunit']['exec'] = '%c %o %s'

let g:quickrun_config['phpunit']['outputter/phpunit/height'] = 3
let g:quickrun_config['phpunit']['outputter/phpunit/running_mark'] = 'running...'
let g:quickrun_config['phpunit']['outputter/phpunit/auto_open'] = 0
"--------------------------------------------------

実行

PHPUnitのテストコードをVimで開いている状態で 「\r」でいつでもPHPUnitを実行、結果をステータスラインの下で確認。
エラーが出た場合、:lw (:lwindow)コマンドでロケーションリストを開くことができる。

ハイライトの設定

VimではデフォルトでPHP用のハイライトをしてくれているが、PHPUnitのコードは新たにfiletype:phpunitを設定しているため
PHPのハイライトが適用されない。

ファイルタイプ別のハイライトは
$VIMRUNTIME/syntax/*.vim で定義されていて、
$HOME/.vim/syntax/*.vim でその設定を上書きできる

PHPUnitで使うテストコードもPHPとしてハイライトをしたいので、コピーして使うことにする。

まずは$VIMRUNTIMEの値を確認し

 :echo $VIMRUNTIME
 /usr/share/vim/vim72

コピーする

[root@localhost ]# cp /usr/share/vim/vim72/syntax/php.vim /home/keynodes/.vim/syntax/phpunit.vim

ちゃんとハイライトが適用された!