2013-02-25 8 views
9

Quando si utilizza la funzione di occultamento di vim set cole=2, si nasconde il testo appropriato per tutto ciò che è configurato in cchar e lo si evidenzia utilizzando il gruppo Conceal.Evid highlight Vim

Il mio problema è che io uso la funzione di nascondere in C/C++ per sostituire le operazioni come &&||, ecc per unicode ⋀ ⋁ ecc, e ho anche usare Concel in html per sostituire entità di testo come "& ccedil;" a "ç".

Così ho in ~/.vim/dopo/sintassi/c.vim

hi clear Conceal 

e in ~/.vim/dopo/sintassi/html.vim

hi Conceal cterm=NONE ctermbg=NONE ctermfg=darkblue 

Il problema è che queste impostazioni sono globali. Se apro un file c, e poi apro un file html, quando torno al file c il gruppo Conceal viene evidenziato come per l'ultimo buffer aperto.

La mia domanda è: Posso impostare il gruppo Conceal per essere utilizzato a qualcosa di diverso da Conceal? Altrimenti, come posso rendere le alte luci specifiche per il buffer corrente (e non a livello globale)?

risposta

7

Non è possibile. Bene, è possibile impostare :autocmds per attivare l'evidenziazione del gruppo Conceal in base al buffer corrente, ma sarebbe comunque disattivato per i buffer visibili non attivi dell'altro tipo. In generale, i gruppi di evidenziazione sono globali e è improbabile che cambino.

Per risolvere il tuo dilemma, sceglierei un'evidenziazione per Conceal che sia discreta quanto basta per l'utilizzo C/C++, ma visivamente distinta per mostrare le entità HTML sostituite. Per me, cancellare completamente l'evidenziazione Conceal non è un uso previsto; dovrebbe sempre servire a ricordare che quello che vedi è non ciò che è effettivamente nel testo.

+0

oh, beh, peccato. Grazie lo stesso. – Akobold