バッファ上のソースコードを実行
その時点のバッファ上のソースコードを拡張子に応じた処理系で実行する。
動機
今までは、:%!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>