Ho scoperto un caso limite interessante nell'evidenziazione della sintassi Vim. Si consideri il seguente frammento da un Makefile società:Vim: Riavvia sintassi Evidenziazione da linea arbitraria
LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
La linea di cui sopra semplicemente rimuove le virgolette da un dato LDSCRIPT
. Niente sintatticamente sbagliato; la marca funziona come previsto e senza problemi.
Il problema
Dal momento che la linea di cui sopra contiene solo un doppio apice, le regole di evidenziazione pensano erroneamente che il resto del corpo del Makefile è citato il testo ed i colori come tale. Per i Makefile semplici, questo è un inconveniente; per 1KLOC + Makefile, questo diventa un vero problema (specialmente dal momento che questa pre-elaborazione si trova vicino alla parte superiore del file).
La questione
Esiste un modo per entrambi i sintassi disattivare l'evidenziazione basa su linee che corrispondono a una certa data espressione regolare (ad es. subst[ \t]*['"],.*
) o qualcosa di simile? In caso contrario, c'è un modo per riavviare l'evidenziazione di Vim su una linea arbitraria preservando i punti salienti sopra?
Se possibile, mi piacerebbe evitare le modifiche al Makefile in quanto questo script è condiviso su più reparti.
Sono disposto a scrivere/modificare vimscript per ottenere ciò, tuttavia non l'ho ancora fatto prima (in misura ragionevole). Qualsiasi suggerimento, suggerimento o altro suggerimento utile sarebbe molto apprezzato.
quello che ho provato
:syntax sync minlines=1
:syntax sync fromstart
:syntax sync clear
Nessuno dei precedenti sembra avere alcun effetto sul evidenziazione quando viene eseguito nell'editor. Guardando attraverso i documenti di aiuto di Vim, sembra che :syn-sync-fourth
possa essere in grado di fare ciò che sto cercando, tuttavia non sono sicuro di come funzioni in modo inverso (ad esempio per disabilitare l'evidenziazione piuttosto che applicarla).
Ricerca cercata e, infine, mi hai aiutato capo :) –