vimでirbっぽいことをするプラグイン
irbのつかいにくさにうんざりした(あとwindowsではwirbleのカラーリングが機能しない)ので作った。会社で。
Vim上でRubyを動かしたい。 - ボクノスをもとに改造した。tanakaBox++。
SICPの回答でもおせわになってます。
使い方:~/vimfiles/after/ftplugin/ruby.vimあたりに保存、rubyファイル開く
Ctrl+Shift+CRでサイレントに実行(オリジナルのC-R相当)。
C-CRだと、式を評価した結果をinspectしたものが挿入される。irbっぽい。
ヒアドキュメントがない言語を使うと泣きそうになりますね。いやコードがある程度長くなったら外部に分離すればいいだけか……
そのうちCodeReposにupしようと思う(誰か暇だったらやっといていいですよ)
関連ページ
- 2008-03-23 - 右往左往
- ruby環境をリセットする方法、出力をバッファにリダイレクトする方法あり
- VimでRubyスクリプトの実行と結果のプレビュー表示 - ナレッジエース
- tips : vim online
ソース
{pull:file path=~/vimfiles/after/ftplugin/ruby.vim last_sync=2008.04.25,19:33} "original: http://d.hatena.ne.jp/tanakaBox/20070827/1188149288 nmap <buffer> <C-CR> :call <SID>Eval(function("<SID>YankNormal"),0)<CR>o<ESC>D nmap <buffer> <C-S-CR> :call <SID>Eval(function("<SID>YankNormal"),1)<CR><CR> imap <buffer> <C-CR> <ESC>:call <SID>Eval(function("<SID>YankNormal"),0)<CR>o<ESC>Di imap <buffer> <C-S-CR> <ESC>:call <SID>Eval(function("<SID>YankNormal"),1)<CR>o<ESC>Di vmap <buffer> <C-CR> :call <SID>EvalVisual(0)<CR> vmap <buffer> <C-S-CR> :call <SID>EvalVisual(1)<CR> execute 'ruby __vim_bind = binding' function! s:Eval(Yank,silent) let s:saved_reg = @" call a:Yank() let code=@" execute 'ruby begin;'. \'result=eval(%q(' . code . '), __vim_bind).inspect;'. \'if '.a:silent.'==0;'. \'cur=VIM::Window.current.cursor[0];'. \'VIM::Buffer.current.append(cur," => "+result);cur+=1;'. \'VIM::Buffer.current.append(cur,"");'. \'VIM::Window.current.cursor=[cur,0];'. \'else;'. \'puts("result: "+result[0...128]+((result.size<=128)?"":"..."));'. \'end;'. \' rescue ScriptError, StandardError => e; puts e.message;end;' let @" = s:saved_reg endfunc function! s:EvalVisual(silent) range call <SID>Eval(function("<SID>YankVisual"),a:silent) endfunc function! s:YankVisual() silent normal `<v`>y endfunc function! s:YankNormal() silent normal yy endfunc {/pull}
sync.vim、内部タグを除去するモードつけなきゃなー。