如何在Vim的注释中不突出显示(使用matchadd()突出显示)模式
例如,我希望:之前或之后的任何字符(空格除外)都高亮显示。为此,我使用:如何在Vim的注释中不突出显示(使用matchadd()突出显示)模式,vim,verilog,Vim,Verilog,例如,我希望:之前或之后的任何字符(空格除外)都高亮显示。为此,我使用: 突出显示操作空间ctermbg=darkblue ctermfg=white guibg=#F59292 :au bufwenter*.v,*.sv让w:m1=matchadd('OpSpace','[^][:]\\\\\\\;[:][^]',-1) 这将突出以下几点: reg[3:0]var 它的问题是,它也突出了评论。例如: //小丑喜欢: o:部分被突出显示,这是我不想要的(它在一个注释行中,使用//)注释) 如有任
突出显示操作空间ctermbg=darkblue ctermfg=white guibg=#F59292
:au bufwenter*.v,*.sv让w:m1=matchadd('OpSpace','[^][:]\\\\\\\;[:][^]',-1)
这将突出以下几点:
reg[3:0]var
它的问题是,它也突出了评论。例如:
//小丑喜欢:
o:部分被突出显示,这是我不想要的(它在一个注释行中,使用//)注释)
如有任何建议,我们将不胜感激
提前感谢。您有两个选择:
使用包含的语法突出显示
您可以扩展文件类型的默认语法规则,而不是使用独立于语法突出显示机制的matchadd()
。在语法突出显示中,下级匹配必须明确包含在上级组中。为了避免在注释中匹配,只需不在那里添加包含。这里的缺点是,您正在与另一种语法集成,并且查找要添加包含的所有组可能并不简单
优化regexp
如果这只是/
-风格的注释,则可以向模式中添加负面查找(请参见:help/\@):
:au BufWinEnter *.v,*.sv let w:m1=matchadd('OpSpace', '\%(//.*\)\@<![^ ][:]\|[:][^ ]', -1)
:au bufwanter*.v,*.sv让w:m1=matchadd('OpSpace','\%(//.\\)\@/
在行中