Например, если я хочу найти \<data\>
но хочу пропустить все записи, появляющиеся в многострочных блочных комментариях, например так:
/*
* Don't match comments containing the term 'data'
*/
Я не могу просто использовать отрицательную внешность нулевой ширины \(\*.*\)\@<!\<data\>
потому что комментарии к блоку не всегда начинаются с *
в каждой строке.
Кажется, что было бы трудно / невозможно исключить совпадения в многострочных блочных комментариях, но подсветка синтаксиса способна определить, какие разделы являются комментариями, а какие нет, поэтому есть ли способ связать поиск регулярных выражений с группами подсветки синтаксиса ?
Если возможно связать группы подсветки синтаксиса, я смогу не только исключить термины, появляющиеся в комментариях, но также и термины, появляющиеся в строках, например:
output = "Sample data: '"+data+"' ...";
И только данные в середине там вне кавычек будут сопоставлены.
Кто-нибудь знает, возможно ли это?
РЕДАКТИРОВАТЬ: Поиск без комментариев, безусловно, возможно, по крайней мере. Я мог бы определить функцию search() и проверить выделенную группу изнутри, как указано кем-то в этой теме. Соответствующая часть:
используйте search() и затем проверьте, является ли группа подсветки синтаксиса комментарием. Если synIDattr(synIDtrans(synID(line("."), Col ("."), 1)), "name") равен Comment, вызовите search() еще раз.
Но я не думаю, что это оставит hlsearch выделением правильных терминов.