Come si può fare in modo che la funzione fold di vim - quando si usa foldmethod = sintassi - nasconda anche una nuova riga dopo ogni funzione, if-else e struct (usando Go).
Come si può fare in modo che la funzione fold di vim - quando si usa foldmethod = sintassi - nasconda anche una nuova riga dopo ogni funzione, if-else e struct (usando Go).
Risposte:
Ecco come farlo per C:
/usr/share/vim) e copialo (di nuovo, sotto Unix) ~/.vim/syntax.syntax region cBlock start="{" end="}" transparent fold
diventa
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Qui, il primo \ncorrisponde al carattere di nuova riga immediatamente successivo alla parentesi graffa di chiusura, il secondo alla riga vuota. Questo non funzionerà se }è seguito, ad esempio, da un commento: il blocco verrà ancora piegato, ma la nuova riga seguente non funzionerà.
Non ho un file di sintassi per Vai qui (per quanto posso dire), ma dovrebbe funzionare in modo simile.
Nota: il modo più flessibile sarebbe quello di creare un nuovo file in ~/.vim/after/syntaxe modificare semplicemente la definizione della regione, ma qui non ho avuto successo. La semplice copia della definizione della regione non funziona.
So che è vecchio, ma in aggiunta alla soluzione @ ansgar-esztermann:
syntax clear cBlock
syntax match cBlock1line /.\s*{.\{-}}/ transparent contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket,cBlockImp
syntax region cBlockImp start=/{/ end=/};\?\(\n\n\)\?/ transparent fold contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket
in ~/.vim/syntax/c.vimpiega nuova linea (anche per structs)