スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

バッファ内のテキストを Ruby で実行する

  • ページ: tips
  • カテゴリー: その他
  • 投稿日: 2006-07-15 11:55:46 (土)

メッセージ

(注意: +ruby が必要)

:Ruby

とすると新しいウィンドウが開くので、そのバッファ内で
ノーマルモードで <CR> を押すとカーソル行を Ruby で実行して出力をその下に挿入し、
ヴィジュアルモードで <CR> を押すと選択範囲を実行するスクリプト。

if has('ruby')
command! Ruby :call RubyBuf()

function! RubyBuf()
  new [Ruby]
  set buftype=nofile
  set bufhidden=delete
  set ft=ruby
  nnoremap <buffer> <silent> <CR> :call RubyEval(getline("."))<CR>
  vnoremap <buffer> <silent> <CR> "ey`]:call RubyEval(@e)<CR>
endfunction

ruby << RUBY_END
	def eval_()
		ret = yield
		VIM.command("let g:ruby_ret='#{ret.inspect}'")
	end
RUBY_END

function! RubyEval(src)
  redir @e 
  sil! exe "ruby eval_ do\r" . a:src . "\r end"
  redir END
  put e
  normal! kJ
  call append(line("."), "=> " . g:ruby_ret)
	normal! +
endfunction
endif

もっと本格的なものが欲しければ、
EvalSelection?.vim
http://www.vim.org/scripts/script.php?script_id=889

vim, bash, ruby, python, perl, tcl, R, SPSS に対応し、
選択範囲を実行結果で置き換えたり、
実行結果を別のウィンドウで開いたりする機能がある。


  • 実行した後、最後に評価した値を =>[1,2,3] のように表示するように改良。 -- 2006-07-30 07:06:15 (日)



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1467d)