La siguiente función es la salida tanto el nombre de la sintaxis grupo y el grupo de sintaxis traducida del carácter en el que se encuentra el cursor:
function! SynGroup()
let l:s = synID(line('.'), col('.'), 1)
echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name')
endfun
Para hacer esto más conveniente, puede ser envuelto en un comando personalizado o enlace de clave.
¿Cómo funciona esto:
line('.')
y col('.')
devuelve la posición actual
synID(...)
devuelve un ID de sintaxis numérico
synIDtrans(l:s)
traduce el identificador de sintaxis numérico l:s
siguiendo relieve los vínculos
synIDattr(l:s, 'name')
devuelve el nombre correspondiente a la sintaxis numérica ID
Esto se hará eco de algo como:
vimMapModKey -> Special
Gracias. Ayudame mucho – kev
Si está aquí porque está tratando de diagnosticar un montón de resaltado rojo, eso es [debido a la revisión ortográfica] (http://stackoverflow.com/questions/28647994/annoying-red-highlighting-of-random-words-in- vim) y SynStack() no parece detectar eso por alguna razón. – Von