バッファ上のソースコードを実行

その時点のバッファ上のソースコードを拡張子に応じた処理系で実行する。

動機

今までは、:%!rubyとかで済ましてたんだけど、runghcとかwscriptだと
ファイルの拡張子を見てるのでそれに対処するために作ってみた。

準備

以下の内容をwindowsなら$VIM/_vimrc、unix系なら$HOME/.vimrcに書く
5行目の拡張子と実行コマンドの対応を適宜修正。
(unix系の場合は'js':'wscript'を'js':'js'にしたりとか)
8行目の起動キーを好きなキーに適宜修正(ここではR)

実行例

% vi foo.rb等のように拡張子のついたファイル名を与えてエディタを起動
puts "hello"とか適当にコードを書く
ESCで挿入モードを抜けてRを押すと、バッファの内容が実行結果に置きかわる
uを押して編集画面に戻る

今後の課題

実行結果を分割ウインドウに出せるといいなあ

function! RunSrc()
  let ext=matchstr(expand('%'),'[^.]*$')
  let tmp=tempname().'.'.ext
  exe 'w '.tmp
  exe '%!'.{'rb':'ruby','scm':'gosh','hs':'runghc','js':'wscript'}[ext].' '.tmp
  call delete(tmp)
endfunction
map R :call RunSrc()<CR>