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