Например, если я хочу выполнить поиск \<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 выделить нужные термины.