VIM 替换功能 数字增减
1 背景知识
想要把所有的标题序号进行增减,可以使用 %s
命令进行替换。具体方法是匹配到数字部分,然后用 submatch
行函数对数字进行增减。
1.1 submatch({nr})
函数
,只用于 :substitute 命令或 substitute() 函数中。它将返回匹配文本的第{nr}个子匹配。如果{nr}为0,则返回整个匹配文本。
1.2 环境准备
准备一段 html
文本如下,放入在 vim
编辑器内。
<h2>Heading number 1</h2>
<h3>Number 2 heading</h3>
<h4>Another heading</h4>
2 所有数字减一
2.1 完整匹配表达式
%s/\v\<\/?h\zs\d/\=submatch(0)-1/g
3 表达式详解
\/v\<\/?h\zs\d
以下是表达式说明:
字符 | 说明 |
---|---|
< | 匹配字符: < 。 |
/? | 匹配一个或0 个字符: / 。 |
h | 原意匹配字符: h 。 |
\zs | 开始匹配表示某一行必须按照以上顺序匹配。 |
\d | 匹配一个数字。 |