2011-01-20 1 views
7

VIMでRubyコードの" Execute and Update '#=>' Markers 'TextMate機能を繰り返す可能性はありますか?私が何かしたいのですが"VIMの#=>" Markers "を実行して更新する

:いくつかのコマンドを入力してください。ここで

x = 2 
class A 
    def a 
    42 
    end 
end 

x # => 2 
A.new.a # => 42 

を取得

x = 2 
class A 
    def a 
    42 
    end 
end 

x # => 
A.new.a # => 

Ciarán Walsh’s Blogから、この機能の説明である:

を知る価値のある別のツールは、 "実行して更新する"#=> ' マークですers "コマンドを使用します(デフォルトでは^⇧⌘Eにあります)。これを使用するには 、あなたがの 結果を確認してから コマンドをトリガしたい ラインの最後に( あなたのためにこれらを挿入します。#⇥のスニペットがある) いくつかのコメントマーカーを追加します。 TextMateはコード を実行し、 行の結果をコメントにインラインで報告します。この 機能は、ソースコードと の結果をまとめて表示しているため、 というオンラインのコードに最適です。

答えて

3

xmpfilterrcodetoolsから使用してください。

+0

ありがとうございました!私は今幸せだ) – cutalion

1

これをVim関数として書くのはあまり難しくないようです。試してみてください:

function! ExecuteAndUpdate() 
    ruby << EOF 
     marker = '# =>' 
     buf = VIM::Buffer.current 
     lines = File.readlines(buf.name) 

     bnd = binding 
     eval(lines.join("\n"), bnd) 

     lines.each_with_index do |line, i| 
      if line.match(/#{marker}/) 
       result = marker + ' ' + eval(line, bnd).inspect 
       buf[i+1] = line.sub(/#{marker}.*/, result).chomp 
      end 
     end 
EOF 
endfunction 

次に:call ExecuteAndUpdate()です。

1つの制限は、各行をマーカーで2回評価することです。マーカーが付いている行には副作用があってはいけません。

+0

ええ、それは私が推測する別の制限だろう。 –

関連する問題