La seguente funzione emetterà sia il nome della sintassi gruppo e il gruppo di sintassi tradotto del carattere su cui si trova il cursore:
function! SynGroup()
let l:s = synID(line('.'), col('.'), 1)
echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name')
endfun
Per renderlo più conveniente, può essere racchiuso in un comando personalizzato o in un collegamento chiave.
Come funziona:
line('.')
e col('.')
restituisce la posizione corrente
synID(...)
restituisce un ID di sintassi numerica
synIDtrans(l:s)
traduce il Numerico Sintassi id l:s
seguendo Stream Links
synIDattr(l:s, 'name')
restituisce il nome corrispondente all'ID sintassi numerico
Questo eco qualcosa di simile:
vimMapModKey -> Special
fonte
2016-05-05 00:36:04
Grazie. Aiutami molto. – kev
Se sei qui perché stai cercando di diagnosticare molte evidenziazioni in rosso, è [a causa di un controllo ortografico] (http://stackoverflow.com/questions/28647994/annoying-red-highlighting-of-random-words-in- vim) e SynStack() non sembra rilevarlo per qualche motivo. – Von