VimのコマンドラインでRubyを実行

引き続きRubyの学習を進めています。もちろんVimで(だいたいの意味でGVim)。今回はVimでの実行環境を一部紹介します。

PHPでも同様なのですが、以下の2種類の関数を定義して使用しています。

  • プログラムを書いて構文エラーが無いのか確認したい
  • プログラムの実行結果をVimのコマンドラインに表示させたい

元ネタは、vimでPHPを編集中、1秒で文法チェックする方法 – /halt/Snapshotです。PHP -lの構文チェックの実行結果をVimのコマンドラインで実行するものです。これを少々書き換えて上記2つを実現してみます。まずは元のコードを。

function PHPLint()
let result = system( &ft . ‘ -l ‘ . bufname(“”))
echo result
endfunction autocmd FileType php noremap <c-l> :call PHPLint()

リンク先では、,+lにショートカットを当てていましたが、押し辛い等々の理由でとりあえず<ctrl>+lを設定しています。このコードを少し書き換える(赤字)と、コマンドラインでPHPの実行結果が得られます。PHPをコマンドラインで実行する場合のオプションを変更しています。この関数は現在、<space>+’にショートカットを当てています。

function PHPExe()
let result = system( &ft . ‘ -r ‘ . bufname(“”))
echo result
endfunction
endfunction autocmd FileType php noremap <space>, :call PHPExe()

Rubyについても同様の方法をとり、必要な部分を書き換えるとそれぞれ以下のようになります。

function RubyLint()
let result = system( &ft . ‘ -c ‘ . bufname(“”))
echo result
endfunction

function RubyExe()
let result = system( &ft .’ ‘.bufname(“”))
echo result
endfunction

弱点は、対象のファイルを一度保存しなければいけない点でしょうか?より高度にQuickRunがイイらしいです。(良く分かっていないけれど自分の環境では動かないらしい。。。)

最終的には、こんな感じに書いています。構文チェックと実行を同一ショートカットキー、ファイルタイプ別で切り替えです。

function PHPLint()
let result = system( &ft . ‘ -l ‘ . bufname(“”))
echo result
endfunction

function PHPExe()
let result = system( &ft . ‘ -r ‘ . bufname(“”))
echo result
endfunction

function RubyLint()
let result = system( &ft . ‘ -c ‘ . bufname(“”))
echo result
endfunction

function RubyExe()
let result = system( &ft .’ ‘.bufname(“”))
echo result
endfunction

autocmd FileType php noremap <C-l> :call PHPLint()<CR>
autocmd FileType ruby noremap <C-l> :call RubyLint()<CR>
autocmd FileType php noremap <space>’ :call PHPExe()<CR>
autocmd FileType ruby noremap <space>’ :call RubyExe()<CR>

VimのコマンドラインでRubyを実行」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。