我想按照讨论显示非 ASCII 字符here,但是当注释中包含非 ASCII 字符时,语法突出显示会消失。调查了一下这个问题,我在 vim 手册中发现较早启动的项目具有更高的优先级(第三项)。从help :syn-priority
:
当多个语法项可能匹配时,使用以下规则:
当多个“匹配”或“区域”项目在同一位置开始时,最后定义的项目具有优先权。
关键字的优先级高于匹配项和区域项。
- 在较早位置开始的项目优先于在较晚位置开始的项目。
我目前正在使用这个:
syntax match nonascii "[^\x00-\x7F]"
highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
我尝试使用选项给非 ASCII 匹配项更高的优先级nextgroup
:
syntax match nonascii "[^\x00-\x7F]" nextgroup=Comment
and contains
选项:
syntax match nonascii "[^\x00-\x7F]" contains=ALL
但没有成功。我也尝试暂时禁用评论(highlight clear Comment
)没有达到预期的效果(我的评论没有突出显示,但 nonascii 继续未突出显示)。我缺少什么?
是的,您的自定义语法组不匹配,因为注释(或现有语法脚本中的其他语法元素)已匹配。
解决方案是告诉 Vim 你的nonascii
组是containedin
这些组,这样 Vim 也会尝试在那里匹配(而不仅仅是在无色的顶层)。使事情变得复杂的是,注释的语法组取决于语法脚本,因此也取决于文件类型(命名非常规则)。在以下示例中,我使用了 C 和 Vimscript 文件的名称:
:syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)