鉴于Vim中的以下文本:
[2] [3] [4]
我想执行搜索并替换并生成以下内容:
[1] [2] [3]
我知道如何通过搜索和替换使用反向引用来提取数字:
:%s/\[\(\d\)\]/[\1]/g
但现在的问题是你如何减少\ 1的值.
有任何想法吗?
尝试
:%s/\[\(\d\+\)\]/\=join(['[', submatch(1) - 1, ']'], '')/g
编辑:我添加了一个\+
以后\d
,如果你想匹配超过一位数的数字.
请参阅:help sub-replace-special