Vim 正则表达式用于选择一行 N 列之后的所有内容

Mat*_*hew 2 vim regex

我正在寻找一个正则表达式,它将选择从第 51 个字符到长度超过 50 个字符的行的末尾的所有文本。

我需要正则表达式不包含该行的前 50 个字符。

这样做的原因是在 gitcommit.vim 语法文件中添加一些内容,以便在摘要超过 50 个字符时使其更加明显。设置ctermbg=red或类似的东西。

我知道我可能可以ctermbg=red为整个第一行做一些设置,然后让gitcommitSummary语法组为前 50 个字符设置背景,但是这个问题引起了我的兴趣,我想知道是否有正则表达式跳过查看该行的前 X 个字符的方法。

我正在玩类似以下的东西,但它只是一个零宽度断言,所以它显然不起作用。有任何想法吗?

# This just highlights all lines exceeding 50 characters
/^\(.\{50\}\)\@=.*$
Run Code Online (Sandbox Code Playgroud)

编辑:刚刚意识到 gitcommit.vim 文件实际上使用“nextgroup”对此进行了语法高亮显示,并且默认情况下将其注释掉。所以我达到了我最初的目标,但我仍然想知道是否可以使用正则表达式来做到这一点。

gar*_*ohn 6

用于匹配特定列的 Vim 正则表达式原子是\%Nc其中 N 是列号。看

:help /\%c
Run Code Online (Sandbox Code Playgroud)

要匹配虚拟列号,原子是\%Nv。看

:help /\%v
Run Code Online (Sandbox Code Playgroud)

要搜索第 50 列之后的任何内容,您可以使用

/\%>50v
Run Code Online (Sandbox Code Playgroud)

在第>50 列之后的任何列匹配的方法。您也可以在 :match 命令中使用该正则表达式,如下所示:

:match ErrorMsg /\%>50v/
Run Code Online (Sandbox Code Playgroud)