例如,如果我想搜索\<data\>
但想跳过出现在多行块注释中的任何条目,如下所示:
/*
* Don't match comments containing the term 'data'
*/
我不能只使用零宽度负向后视,\(\*.*\)\@<!\<data\>
因为块注释并不总是*
在每一行都以 a 开头。
似乎很难/不可能排除多行块注释中的匹配,但语法高亮能够识别哪些部分是注释,哪些不是,那么有没有办法将正则表达式搜索与语法高亮组结合起来?
如果可以结合语法高亮组,我不仅可以排除注释中出现的术语,还可以排除字符串中出现的术语,如下所示:
output = "Sample data: '"+data+"' ...";
并且只有引号之外中间的数据才会被匹配。
有人知道这是否可能吗?
编辑:排除注释进行搜索至少是可行的。我可以定义一个 search() 函数并从其中检查突出显示组,正如某人在此主题. 相关部分:
使用 search() 然后检查语法高亮组是否为注释。如果 synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") 为注释,则再次调用 search()。
但我不认为这会让 hlsearch 突出显示正确的术语。