Возможно ли в vim искать термин, исключая те, которые встречаются в комментариях/блочных комментариях?

Возможно ли в vim искать термин, исключая те, которые встречаются в комментариях/блочных комментариях?

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

Связанный контент