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

2

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

Мэтью
источник
1
Встроенные :help include-searchпропуски совпадений в комментариях.
Ромен
1
Я сделал для этого патч: groups.google.com/d/msg/vim_dev/gCJ0vB2pQ8c/PHRPwBJCEgAJ
Кристиан Брабандт,
@ChristianBrabandt, устанавливает ли подсветка hlsearch желаемые совпадения и пропускает выделенные совпадения в отфильтрованной группе?
Мэтью
Функция @Matthew search () не зависит от выделения hlsearch
Кристиан Брабандт