vim中是否有像^这样的模式?

Mic*_*ael 23 vim regex

在 Vim 正常模式下,该0命令会将您带到该行的第一列并^带您到该行的逻辑起点(例如第一个非空白字符)。在正则表达式世界中,^匹配行中的第一个字符,无论是否有空格。Vim 是否有一个行为类似于它的 '^' 命令的模式——匹配一行的逻辑开头?

Kar*_*ldt 18

匹配一行中的第一个非空白字符没有捷径,您必须自己构建模式,例如:

^\s*restofpattern
Run Code Online (Sandbox Code Playgroud)

如果您不想在匹配中包含空格,则必须使用零宽度断言,例如:

\(^\s*\)\@<=restofpattern
Run Code Online (Sandbox Code Playgroud)

不完全漂亮,但至少它完成了工作。


Mic*_*ton 8

要匹配第一个空白字符,您只需\S像往常一样使用即可。


如果您^在 vim 中使用正则表达式,它将匹配行的实际开头,即使它包含空格。

例如,这一行以空格开头:

 <- there's a space there you can't see :)
Run Code Online (Sandbox Code Playgroud)

这个 vim 命令将删除前导空格:

:%s/^ //
Run Code Online (Sandbox Code Playgroud)

结果如下:

<- there's a space there you can't see :)
Run Code Online (Sandbox Code Playgroud)

因此,即使命令没有,正则表达式也会如您所愿。

  • `\S` 将匹配*任何*非空白字符。换句话说,我想知道 Vim 是否有一个零宽度的简写:`^\W*\S`。 (3认同)