我们说我有一些代码:
divide(int x) {
int a = 0;
a += x;
}
subtract(int x) {
int b = 0;
b += x;
}
multiply(int x) {
int c = 0;
c += x;
}
我正在使用VIM,我希望能够使用vim命令行按顺序搜索并替换每个+ =和{'/=', '-=', '*='}
的实例。
我想使用:%s/+=/...
,但我不确定如何使用<div class="col-md-6">
<iframe width="100%" height="100%" src="https://www.youtube.com/embed/C0DPdy98e4c?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>
。
我还想过在this这样的vim中使用python,但如果可能的话,我更希望在VIM中使用更简单的解决方案。
答案 0 :(得分:2)
如果您的所有+=
出现在不同的行上:
:let c=0 | g/\m+=/ s!\m+=!\=['/=', '-=', '*='][c%3]! | let c+=1
如果同一行上可能有多个+=
:
:fu! Cycle() | let c+=1 | return ['/=', '-=', '*='][c%3] | endf
:let c=-1 | %s/\m+=/\=Cycle()/g
参考文献:
:h :global
:h s/\=
答案 1 :(得分:1)
这是@ SatoKatsura的答案的缩写。它首先定义一个替换列表,然后使用:help sub-replace-expression
删除列表的第一个元素。
:let replacements = ['/=', '-=', '*='] | %s#+=#\=remove(replacements, 0)#
如果有超过3个替换,并且您想重复替换,请使用:
:let replacements = ['/=', '-=', '*='] | %s#+=#\=add(replacements, remove(replacements, 0))[-1]#