我写了一部分网页,内容如下:
<span id="item01"> some first presented text</span>
<span id="item02"> some other text, presented second</span>
<span id="item03"> more text</span>
....
<span id="item15"> last bit of text.</span>
然后,我意识到应该将它从14编号为0,而不是从1编号为15。(是的,我的设计不好,不打算首先设计JavaScript。)
问题。 vim中有没有一种简单的方法可以对正则表达式中的数字进行数学运算?我想做的是搜索文本“item [00-99]”,并使其返回文本“item(15-原始数字)”
搜索似乎很容易-/item([0-9] [0-9])/
(用圆括号将找到的数字放入缓冲区),但是甚至可以对此进行数学运算吗?
Macro for making numbered lists in vim?提供了一种从头开始编号的方法,但是我正在寻找一种重新编号的方法。
最佳答案
:%s/item\zs\d\+/\=15 - submatch(0)/
会做你想要的。
分解:
item\zs\d\+
:item
之后的匹配数字(\zs
表示比赛的开始)\=
:指示替换是一个表达式15 - submatch(0)
:返回15减去匹配的关于regex - 如何在vim中重新编号列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777172/