É possível no vim procurar um termo excluindo aqueles que aparecem nos comentários/bloquear comentários?

É possível no vim procurar um termo excluindo aqueles que aparecem nos comentários/bloquear comentários?

Por exemplo, se eu quiser pesquisar, \<data\>mas quiser pular qualquer entrada que apareça em blocos de múltiplas linhas, comentários como este:

/*
 * Don't match comments containing the term 'data'
 */

Não posso simplesmente usar lookbehind negativo de largura zero \(\*.*\)\@<!\<data\>porque os comentários do bloco nem sempre começam com um *em cada linha.

Parece que seria difícil/impossível excluir correspondências dentro de comentários de blocos de múltiplas linhas, mas o realce de sintaxe é capaz de identificar quais seções são comentários e quais não são, então existe alguma maneira de vincular a pesquisa regex com grupos de realce de sintaxe ?

Se for possível vincular-se aos grupos de realce de sintaxe, eu poderei excluir não apenas os termos que aparecem nos comentários, mas também os termos que aparecem nas strings, como este:

output = "Sample data: '"+data+"' ...";

E apenas os dados no meio, fora das aspas, seriam correspondidos.

Alguém sabe se isto é possível?

EDITAR:Pesquisar excluindo comentários é definitivamente possível, pelo menos. Eu poderia definir uma função search() e verificar o grupo de destaque dentro dela, conforme indicado por alguém emeste tópico. Parte relevante:

use search() e verifique se o grupo de destaque de sintaxe é um comentário. Se synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") for Comentário, chame search() novamente.

Mas não acho que isso deixaria o hlsearch destacando os termos corretos.

informação relacionada