我正在寻找一个正则表达式,它将选择从第 51 个字符到行末的所有文本,这些文本的长度超过 50 个字符。
我需要正则表达式不包含该行的前 50 个字符。
这样做的原因是向 gitcommit.vim 语法文件添加一些内容,以便当我的摘要超过 50 个字符时更加明显。设置ctermbg=red
或类似的东西。
我知道我可能会做一些事情,比如设置ctermbg=red
整个第一行,然后让gitcommitSummary
语法组将背景设置回前 50 个字符,但这个问题引起了我的兴趣,我想知道是否有办法让正则表达式跳过查看该行的前 X 个字符。
我正在尝试类似下面的内容,但它只是一个零宽度断言,所以显然不起作用。有什么想法吗?
# This just highlights all lines exceeding 50 characters
/^\(.\{50\}\)\@=.*$
编辑:刚刚意识到 gitcommit.vim 文件实际上使用“nextgroup”对此进行了语法突出显示,只是默认情况下将其注释掉了。所以我达到了最初的目标,但我仍然想知道是否可以使用正则表达式来做到这一点。
答案1
Vim 正则表达式中用于匹配特定列的原子是 N,\%Nc
其中 N 是列号。请参阅
:help /\%c
为了匹配虚拟列号,原子是\%Nv
。参见
:help /\%v
要搜索第 50 列之后的内容,您可以使用
/\%>50v
表示>
匹配第 50 列之后的任意列。您也可以在 :match 命令中使用该正则表达式,如下所示:
:match ErrorMsg /\%>50v/