submatch命令在Vim中是如何工作的?

我遇到了这个非常漂亮和方便的命令

:.,$/^d+/=submatch(0) + 1/g

它的作用是查找当前行之后的任何行,并检查该行是否以数字开头。如果是,它将用其当前值的增量替换它;然而,我对这实际上是如何发生的感到很困惑。我猜这=submatch(0)部分是在做繁重的工作,但我不知道如何做。还有一个+ 1aftersubmatch充当算术,这让我感到惊讶。我原以为它会作为文本插入,而不是对匹配的数字执行算术运算。

回答

由于字符串以 a 开头=,因此将其计算为表达式。在这种情况下,submatch(0) + 1被评估为函数

submatch

可以使用“ submatch(0)”访问整个匹配的文本。文本与第一对()submatch(1)”匹配。同样对于().

在上面的正则表达式中,整个匹配实际上是数字(每个匹配行的第一个数字)。因此submatch(0) + 1将在捕获的匹配项中添加 1。


以上是submatch命令在Vim中是如何工作的?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>