facendo vim fold anche nascondere newline dopo la funzione


8

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:


4

Ecco come farlo per C:

  • Prendi il file di sintassi originale (sotto Unix, in genere si trova in /usr/share/vim) e copialo (di nuovo, sotto Unix) ~/.vim/syntax.
  • Modifica il modello "end" nella definizione della regione cBlock:
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.


0

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)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.