¿Es posible en vim buscar un término excluyendo los que aparecen en comentarios/comentarios de bloque?

¿Es posible en vim buscar un término excluyendo los que aparecen en comentarios/comentarios de bloque?

Por ejemplo, si quiero buscar \<data\>pero quiero omitir las entradas que aparecen en comentarios de bloques de varias líneas como este:

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

No puedo simplemente usar una búsqueda hacia atrás negativa de ancho cero \(\*.*\)\@<!\<data\>porque los comentarios del bloque no siempre comienzan con a *en cada línea.

Parece que sería difícil/imposible excluir coincidencias dentro de comentarios de bloques de varias líneas, pero el resaltado de sintaxis puede identificar qué secciones son comentarios y cuáles no, entonces, ¿hay alguna forma de vincular la búsqueda de expresiones regulares con los grupos de resaltado de sintaxis? ?

Si es posible vincularnos a los grupos de resaltado de sintaxis, no solo podría excluir los términos que aparecen en los comentarios, sino también los términos que aparecen en cadenas, como esta:

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

Y solo se coincidirían los datos en el medio fuera de las comillas.

¿Alguien sabe si esto es posible?

EDITAR:Definitivamente, al menos es posible buscar comentarios excluyentes. Podría definir una función de búsqueda () y verificar el grupo resaltado desde dentro, como lo indicó alguien eneste hilo. Porción relevante:

use search() y luego verifique si el grupo resaltado de sintaxis es un comentario. Si synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") es Comentario, llame a search() nuevamente.

Pero no creo que esto dejaría a hlsearch resaltando los términos correctos.

información relacionada