2017-08-01 4 views
1

私がしたいのは、置き換え回数を追跡して数値をつけたカウンタを含む検索置換パターンを実行することです。vim:増分カウンタで置き換えます

例を示します。私は次の構造のコードブロックを持っているとしましょう:

if (condition1(value)): 
    array.push(value) 
elseif (condition2(value)): 
    array.push(modified(value)) 
elseif (condition3(value)): 
    array.pop(value) 

しかし、50の条件のようなふりをします。私はそれぞれのpushまたはpopの上にデバッグプリントステートメントを置いて、実行時に何が起きているかを確認したいと思います。私は:%s/^\(\s\+\)\(array.p\)/\1print "DEBUG"\r\1\2/gでそれぞれ前に同じステートメントを置くことができますが、これは印刷物がすべて同じであるために役立ちません。

最初の試合の前にprint "DEBUG 1"を入れ、2番目の試合の前にprint "DEBUG 2"を入れていますが、そうするためには、何らかのタイプのカウンターが必要です。

答えて

2
:let i = 0|g/\(push\|pop\)/let i = i + 1|put!='print \"DEBUG ' . i . '\"' 

説明:

let i = 0       define a control variable 

g/\(push\|pop\)/     mark all lines containing 'push' or 'pop' 
            then execute what follows on each marked line 

let i = i + 1      increment the control variable 

put!='print \"DEBUG ' . i . '\"' put the debugging statement above 

:help :global:help :let、および:help :putを参照してください。

関連する問題