KazuminEngine

プログラマーの日記

上級Vimmerすごい

今日また、vim-jpに質問を投げて返してもらったので、そのlog

こんなのがしたくて、質問を投げた

let n = 1
for n < 10
    s/"arg".n/b:000[n]/
endfor

たとえば、arg1にhoge,arg2にpiyoなどを置換したい。

帰ってきた答えが、 exucuteしたらどう?など。前にexcuteの説明読んだんだけどわかんなかったなーしてたら、mattnさんからコードが飛んできた。

silent! %s/arg\([0-9]\+\)/\=get(a:000, submatch(1)-1, '')/g

正直焦りましたね。動きますけど、挙動がわかんない。

vimscriptテクニックバイブル本を見てみると

getは第一引数のリストを第二引数をkeyとして返す。submatch()関数は、\()\で一致したものを返す。 %はバッファの上から順にs/をかけてくれる。

ってな感じで、感謝しつつ、上級vimmerすげーしてた。