【问题标题】:How Does the submatch Command Work In Vim?在 Vim 中 submatch 命令是如何工作的?
【发布时间】:2021-05-02 06:27:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: regex vim substitution neovim


    【解决方案1】:

    由于字符串以\= 开头,因此它被评估为表达式。在这种情况下,submatch(0) + 1 被评估为一个函数

    submatch:

    可以使用“submatch(0)”访问整个匹配的文本。匹配的文本 第一对() 和“submatch(1)”。同样为了进一步 () 中的子匹配项。

    在上面的正则表达式中,整个匹配实际上是数字(每个匹配行的第一个数字)。所以submatch(0) + 1 会为捕获的匹配加 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2011-05-06
      • 2020-11-01
      相关资源
      最近更新 更多