gpt4 book ai didi

regex - 如何在 Vim 语法中突出显示以 ‘@’ 开头的单词?

转载 作者:行者123 更新时间:2023-12-04 10:26:51 25 4
gpt4 key购买 nike

我有一个非常简单的 Vim 语法文件用于个人笔记。我想突出显示人们的名字,我选择了类似 Twitter 的语法 @jonathan .

我试过:

syntax match notesPerson "\<@\S\+"

意思是:以 @ 开头的词并且至少有一个非空白字符。问题是 @似乎是 Vim 正则表达式中的一个特殊字符。

我试图逃跑 \@并用括号括起来 [@] ,通常的技巧,但这不起作用。我可以尝试类似 (^|\s) (行或空格的开头)但这正是 word-boundary 试图解决的问题。

突出显示适用于简化的正则表达式,因此这更像是一个找到正确的正则表达式的问题。我错过了什么?

最佳答案

@仅当您启用“非常神奇”时才为特殊字符
模式通过 \v在该模式之前的某个位置 @ .

你还有一个问题:@不开始一个新词。 \<
不仅仅是像 perl/PCRE 那样的“词边界”\b ,但是“左词
边界”(帮助:“词的开头”)意思是 \<必须是
后跟一些关键字字符。如 @通常不是关键字
字符、图案 \<@永远不会匹配。 (即使它就像\b ,它将匹配像 abc@def 这样的结构这绝对不是
由于上述原因,您想要什么。)

您应该使用 \k\@<!@\k\S*相反:\k\@<!确保 @前面没有任何关键字字符,\k\S*确保名称的第一个字符是关键字(您也可以使用 @\<\S\+ )。

还有另一种解决方案:包括 @进入 'iskeyword'选项并保留正则表达式:

:setlocal iskeyword+=@-@

:help 'isfname'解释为什么 @-@在这里使用。
( 'iskeyword' 选项具有完全相同的语法,并且将,
实际上,将您重定向到那里以进行解释。)

关于regex - 如何在 Vim 语法中突出显示以 ‘@’ 开头的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com