Vim の Ruby インタフェース

Ruby スクリプトの結果を手軽に Vim のバッファに適用できないものかと調べた結果、Vim には Ruby/Python/Perl インタフェースなるものが実装されていることを知った。詳しくは、:he ruby (和訳) にある。

主に使用するコマンドは以下の 2 つ。

:ruby {command}

command を実行する。現在のバッファは VIM::Buffer.current または、グローバル変数の $curbuf で参照が可能。例えば、現在のバッファに hoge0 ~ hoge9 を挿入するには、VIM::Buffer オブジェクトの append メソッドを利用して

:ruby 10.times{|x|$curbuf.append($curbuf.count,"hoge#{x}")}

とすればよい。

:[range]rubydo {command}

[range] に指定された各行が $_ に格納される。Vim正規表現では煩わしい時や、文字列処理などに使える。[range] を省略した場合はファイル全体が対象となる。また、[range] には、ビジュアルモードで選択した範囲も適用できる。

例えば、

hoge
foo
bar

バッファの内容がこのような状態であれば

:rubydo $_.chop!
または
:rubydo chop
hog
fo
ba

という処理や

:rubydo $_.gsub!(/[aeiou]/,"*")
または
:rubydo gsub(/[aeiou]/,"*")
h*g*
f**
b*r

というような処理が可能。