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

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

カテゴリー: Vim   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>