vim:搜索替换为递增计数器
我想做的是执行一个搜索替换模式,该模式将包括一个计数器,它跟踪已进行的替换的数量并对其进行编号 这里有一个例子。假设我有一个以下结构的代码块:vim:搜索替换为递增计数器,vim,Vim,我想做的是执行一个搜索替换模式,该模式将包括一个计数器,它跟踪已进行的替换的数量并对其进行编号 这里有一个例子。假设我有一个以下结构的代码块: if (condition1(value)): array.push(value) elseif (condition2(value)): array.push(modified(value)) elseif (condition3(value)): array.pop(value) 但假设有50个条件。我想在每个push或pop上方放置一
if (condition1(value)):
array.push(value)
elseif (condition2(value)):
array.push(modified(value))
elseif (condition3(value)):
array.pop(value)
但假设有50个条件。我想在每个push
或pop
上方放置一个debug print语句,这样我就可以看到它运行时发生了什么。我可以用:%s/^\(\s\+\)\(array.p\)/\1print“DEBUG”\r\1\2/g
,将相同的语句放在每个语句之前,但这没有帮助,因为打印都是相同的
我想在第一个匹配之前放置print“DEBUG 1”
,在第二个匹配之前放置print“DEBUG 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