在vim上将项目设置为更高的突出显示优先级

Wer*_*ner 7 vim vim-syntax-highlighting

我希望非ascii字符显示在这里讨论,但是当非ascii字符在注释中时,语法高亮消失.稍微调查一下这个问题,我在vim-manual上发现,先前启动的项目具有更高的优先级(第3项).来自help :syn-priority:

当多个语法项可能匹配时,将使用以下规则:

  1. 当多个匹配或区域项目在同一位置开始时,最后定义的项目具有优先级.

  2. 关键字优先于匹配和区域项.

  3. 从较早位置开始的项目优先于在以后位置开始的项目.

我目前正在使用这个:

syntax match nonascii "[^\x00-\x7F]" 
highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下选项给nonascii匹配项更高优先级nextgroup:

syntax match nonascii "[^\x00-\x7F]" nextgroup=Comment
Run Code Online (Sandbox Code Playgroud)

contains选项:

syntax match nonascii "[^\x00-\x7F]" contains=ALL
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我还尝试暂时禁用评论(highlight clear Comment)而没有达到预期的效果(我的评论没有突出显示,但是nonascii继续没有突出显示).我错过了什么?

Ing*_*kat 7

是的,您的自定义语法组不匹配,因为已经有评论匹配(或现有语法脚本中的其他语法元素).

解决方案是告诉Vim您的nonascii组是containedin那些组,以便Vim也会尝试匹配那里(而不仅仅是在未着色的顶级).令其复杂的是注释的语法组取决于语法脚本,因此取决于文件类型(命名非常规则).在以下示例中,我使用了C和Vimscript文件的名称:

:syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment
Run Code Online (Sandbox Code Playgroud)