Domanda

Esiste un modo per far sì che VIM continui ad applicare la formattazione alla linea utilizzata come intestazione per una piega?

Ad esempio, ho il seguente codice:

int foo(int a, int b) {
    int c;
....
}

Quando è chiuso, vedo:

+-- 4 lines: int foo(int a, int b) {----------------------------

Tuttavia, l'intera linea è evidenziata come da " Piegato " classe. Esiste un modo per disabilitarlo, quindi continuo a vedere l'evidenziazione della sintassi?

[per un semplice esempio questo non è così importante, ma uso anche la piegatura estesa nella visualizzazione di file di dati di grandi dimensioni, e lì la formattazione è molto più importante per me]


È stato utile?

Soluzione

  

Tuttavia, l'intera linea è evidenziata come da " Piegato " classe. Esiste un modo per disabilitarlo, quindi continuo a vedere l'evidenziazione della sintassi? & Quot;

No, il testo del titolo piegato non è testo che fa parte di un file e non è direttamente modificabile, ma solo calcolato e sovrapposto sullo schermo. L'evidenziazione "Piegato" viene applicata all'intera linea e tutte le pieghe hanno lo stesso evidenziamento applicato.

Per il mio uso con vim come outliner (nel progetto VimOutliner) ho hackerato la fonte vim per consentire l'evidenziazione di piega diversa a seconda del livello di piegatura, quindi vengono applicati più punti salienti dell'intestazione di piegatura (ad esempio FoldLevel1, FoldLevel2, eccetera.). Presumo che potrebbe essere ulteriormente violato per usare l'evidenziazione del testo già esistente sulla linea della piega, ma dato il modo in cui funziona la piegatura sospetto che potrebbe essere più difficile da fare di quanto sembri.

Mi dispiace, mi ha appena colpito il fatto che il suggerimento per il metodo di piegatura del rientro potrebbe essere esattamente quello che stai cercando, il che preserva la sintassi nelle linee non trattate pur facendole funzionare come una sorta di intestazione per la sezione piegata.

Altri suggerimenti

Penso che ciò che stai cercando sia cambiare il metodo fold in indent anziché in manuale, che è l'impostazione predefinita. Digita questo in modalità comando.

:set foldmethod=indent

Ora se entri nella tua funzione foo e digiti zm (aumenta il livello di piega di uno), sembrerà così:

int foo(int a, int b) {
+--  2 lines: int c;------------------------------------------------------------
}

La foo line avrà ancora l'evidenziazione della sintassi. Per spiegarlo ovviamente, digita zr. Per comodità ho inserito le seguenti righe nel mio .vimrc per piegare o aprire rapidamente tutto:

" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>

C'è anche un buon tutorial qui , e ovviamente leggendo la guida di vim su foldmethod potrebbe portarti ad altri metodi che ti piacciono di più del rientro, ma l'aspetto del tuo codice di esempio probabilmente vorrai il rientro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top