反向引用搜索替换为尾随数字

Backreference search replace with trailing numeral

我正在使用 vim 查找一个四位数并替换最后一位数字,但与使用 </code> 值作为反向引用的新学校 sed 不同,它使用 <code> 并且我正在努力添加以下数字。我需要做的:

我想我需要s/\(=[0-9]\{3\}\)4/=<xxx>5/g 其中 是一个零长度的字符。 我试过 s/\(=[0-9]\{3\}\)4/=5/g 但它没有使用反向引用。 有趣的是s/\(=[0-9]\{3\}\)4/=/g 做对了,但是有一个极端情况,实际上有 15 个反向引用组...

只能有 9 个子匹配项。 </code> 到 <code>[=13=] 这是整场比赛。您可以在 :help s/:help / 的帮助中看到这一点,其中仅列出 1 到 9。因此尾随数字没有歧义。 </code> 始终是第一个子匹配,后跟 5。如果超过 9,也会出现错误。</p> <p>如果你使用所有这些,你的正则表达式可能太复杂了。</p> <hr> <p>如果您想在替换命令中执行加法,我会使用带表达式的替换。这是通过将 <code>\= 作为替换的开始并将其后的内容视为 vim 表达式来完成的。

:s/=\zs\d\+/\=submatch(0) + 1/g

此功能的帮助页面是 :help sub-replace-expression