submatch 命令如何在 Vim 中工作?
How Does the submatch Command Work In Vim?
我遇到了这个非常漂亮和方便的命令
:.,$/^\d\+/\=submatch(0) + 1/g
它的作用是找到当前行之后的任何一行,并检查该行是否以数字开头。如果是,它将用当前值的增量替换它;但是,我对这实际上是如何发生的感到很困惑。我猜 \=submatch(0)
部分正在做繁重的工作,但我不知道如何做。在submatch
后面还有一个+ 1
是算术,这让我很惊讶。我本以为它会作为文本插入而不是对匹配的数字进行算术运算。
由于字符串以 \=
开头,它被计算为 表达式 。在这种情况下,submatch(0) + 1
被计算为 函数 .
The whole matched text can be accessed with "submatch(0)
". The text matched
with the first pair of ()
with "submatch(1)
". Likewise for further
sub-matches in ()
.
在上面的正则表达式中,整个匹配实际上是数字(每个匹配行的第一个数字)。所以 submatch(0) + 1
会将捕获的匹配项加 1。
我遇到了这个非常漂亮和方便的命令
:.,$/^\d\+/\=submatch(0) + 1/g
它的作用是找到当前行之后的任何一行,并检查该行是否以数字开头。如果是,它将用当前值的增量替换它;但是,我对这实际上是如何发生的感到很困惑。我猜 \=submatch(0)
部分正在做繁重的工作,但我不知道如何做。在submatch
后面还有一个+ 1
是算术,这让我很惊讶。我本以为它会作为文本插入而不是对匹配的数字进行算术运算。
由于字符串以 \=
开头,它被计算为 表达式 。在这种情况下,submatch(0) + 1
被计算为 函数 .
The whole matched text can be accessed with "
submatch(0)
". The text matched with the first pair of()
with "submatch(1)
". Likewise for further sub-matches in()
.
在上面的正则表达式中,整个匹配实际上是数字(每个匹配行的第一个数字)。所以 submatch(0) + 1
会将捕获的匹配项加 1。