No Bugs, No Life

読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。

Vimプラグインの導入#2(rspec.vim)とquickrun.vimの出力バッファ位置の固定

Vim環境整備#2
(2013/05/02 id:thinca様よりコメントを頂きましたので、一部記載を訂正しています。)

今回はRSpecのテストケースを書くにあたって、RSpecのシンタックスハイライトを有効にしたのでそのプラグインについて記述。
加えて、quickrunの[quickrun output]バッファの表示位置をウインドウの下段に固定したのでその設定内容をメモ。
特に後者は正しいやり方かどうか良く判っていないので読んだ人は注意してください。
(2013/05/02 作者のid:thinca様より頂いたコメントに基づき修正し、問題なく動作しました。)

rspec.vim

rspec予約語(describeとかitとか)をvim上でsyntax highlightするために、rspec.vimを導入する。
vim onlineではrspec.vim - Rspec syntax highlighting : vim onlineに登録されているが、これも最近の風潮かソースはGithub上で管理(Keithbsmiley/rspec.vim · GitHub)されていてVundleでのインストール方法などが書かれている(ということでNeoBundleでも管理可能な筈)。

vimrcの設定と導入

NeoBundleを使用してrspec.vimを管理するために$VIM/vimrcに以下の記述を追加して、vimrcを読み直してから:NeoBundleInstallのみ。問題なく導入できた。

NeoBundle 'Keithbsmiley/rspec.vim'

quickrun outputの出力先を修正(g:quickrun_config)

quickrun実行時の出力バッファの表示場所をウインドウの下段に固定したく:help g:quickrun_config, :help quickrun-module-outputter辺りを見ていたら、outputter/buffer/split で指定できる様子。
勢いあまってついでにvimrcを以下のように修正。
vimrcを読み込みなおして<Leader>r でrspecが実行され、ウインドウ下段に[quickrun output]が表示されることを確認できた。

""""""""""""""""" quickrunの設定
""""""""""""""""" http://vim-users.jp/2010/09/hack172/ をベースにコマンド名の修正とoutputter/buffer/split指定の追加
let g:quickrun_config = {}
let g:quickrun_config['ruby.rspec'] = {
      \ 'command': 'rspec',
      \ 'outputter/buffer/split': ':botright'
      \ }

quickrun outputの出力先を下段とする設定をデフォルトに(autoload/quickrun.vim側のデフォルト値)

上記ではファイルタイプ ruby.rspecの場合に出力バッファを設定したが、個人的には本来はrspecに限定したくないので、"_"に対して設定する必要があった。
本来の正しいやり方が良く判らないので、ひとまずは~/.bundle/vim-quickrun/autoload/quickrun.vimを直接編集した。
以下の 'outputter/buffer/split': ':botright'の行を追加している。
vimrc側とかで対応する方法がわかったら修正するが、ひとまずはこれで様子を見る(上記のvimrcに対する変更は元に戻した)。

(2013/05/02 id:thinca様より頂いたコメントに基づき以下のように$VIM/vimrcを修正し、問題なく動作しました。)

:()
""""""""""""""""" quickrunの設定
""""""""""""""""" http://vim-users.jp/2010/09/hack172/ をベースにコマンド名の修正とoutputter/buffer/split指定の追加
let g:quickrun_config = {}
let g:quickrun_config._={
      \ 'outputter/buffer/split': ':botright'
      \ } " taught by thinca-san. thx!
let g:quickrun_config['ruby.rspec'] = {
      \ 'command': 'rspec'
      \ }
augroup RSpec
  autocmd!
  autocmd BufWinEnter,BufNewFile *_spec.rb set filetype=ruby.rspec
augroup END

:()