02/01/08 00:32
逆転裁判(GBA)をやっとクリアした今日この頃。
じゃ、foo.vim解読の続き。
>>86の別のやり方。
command! -nargs=* Range
\ | execute substitute(<q-args>, '\(\S\+\)\s\+\(\S\+\)\(.*\)',
\ 'let Range_range=\1.",".\2', "")
\ | execute Range_range . substitute(<q-args>, '\S\+\s\+\S\+', "", "")
\ | unlet Range_range
a~b行目を置換するには?
:let a = 2
:let b = 4
:Range a b s/foo/bar/g
ごちゃごちゃしている正規表現もよく見れば簡単。
\s は空白。\S は空白以外。+は前の文字が1個以上。
()で囲ったのは置換文字列内で順に \1 \2 とかで参照出来る。
+ と () には \ を付ける。
んで、let Range_range=a.",".b が実行されて変数が数値に展開されて、
execute "2,4" . " s/foo/bar/g" となると。