Come abilitare e usare la piegatura del codice in Vim?


49

Come posso abilitare e fare la piegatura del codice in Vim?

Devo cambiare qualcosa in ~/.vimrc?

Scrivo z+ ae z+ ce z+ oe non succede nulla.

Ecco un articolo sulla piegatura: codice pieghevole in Vim .

Risposte:


40

No non c'è bisogno di mettere il comando dalla pagina si è collegato al vostro ~/.vimrc, si può semplicemente digitare dopo aver emesso :in vimper ottenere il prompt dei comandi.

Tuttavia se metti le linee:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

come indicato nel link che hai fornito, nel tuo ~/.vimrcnon devi digitarli ogni volta che vuoi usare la piegatura in un file. Si set nofoldenableassicura che quando si aprono, i file sono "normali", cioè non piegati.


Ho un codice che è scritto da C, quindi il cursore su una delle sue funzioni. Premo <kbd> esc </kbd> per andare al comando quindi, dopo:, scrivo zc e non succede nulla.
Mohammad Reza Rezwani,

1
@alex the zc non dovresti digitare dopo :. Digitare i setcomandi dopo il prompt visualizzato durante la digitazione :. La zcdigitazione quando si può muovere liberamente il cursore, proprio come si usa ztper ottenere il testo il cursore si trova alla parte superiore della schermata corrente.
Anthon,

40

Piega per impostazione predefinita

Il metodo di piegatura predefinito di Vim manualsignifica che le pieghe vengono create manualmente; altrimenti, non v'è nessuna piega da chiudere o aperti utilizzando za, zoo zccome descritto. Ma, è possibile creare una piega da zf{motion}in normale modalità o zfin visiva modalità; ad es. zfjcrea una piega per la linea corrente e la successiva successiva in modalità Normale .

Piega vicino indent

La risposta accettata, da @Anthon, descrive come impostare il metodo di piegatura su indent; vale a dire che la piegatura è definita dal livello di rientri.

Piega vicino syntax

In un modo più conveniente, le pieghe possono essere create automaticamente in base alla sintassi della lingua del buffer corrente. Se stai usando un linguaggio di programmazione, chiamiamolo L , e hai la definizione di piegatura di L (ad esempio hai installato un plugin Vim in cui sono definite le informazioni di piegatura di L ; come c.vim per C / C ++ o python -mode per Python), devi solo impostare il metodo di piegatura su syntax:

set foldmethod=syntax

Questo è tutto. I comandi più utili per lavorare con le pieghe sono:

  • zo apre una piega al cursore.
  • zShift+ oapre tutte le pieghe sul cursore.
  • zc chiude una piega al cursore.
  • zmaumenta foldleveldi uno.
  • zShift+ mchiude tutte le pieghe aperte.
  • zrdiminuisce foldleveldi uno.
  • zShift+ rdiminuisce foldlevela zero - tutte le pieghe saranno aperte.

14

Non è necessario utilizzarlo sistematicamente: di solito seleziono manualmente le pieghe in base al movimento o alla sezione. Ad esempio, piegare un paragrafo è zfipe piegare le 20 linee successive è zf20j. Utilizzare zaper attivare e disattivare zd.

Ciò richiede un po 'più di lavoro ma consente alla piegatura di riflettere l'attività da svolgere.


4

È possibile abilitare foldingnella sessione corrente come la risposta di @ Anthon. Ma se vuoi renderlo permanente, devi impostare almeno questa linea nel .vimrclavoro di piegatura:

set foldmethod=indent

indent è una specie di piegatura, puoi vedere di più da :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

Ora, ogni volta che apri un file con vim, puoi vedere che il codice è piegato dal metodo che hai impostato. Quindi è possibile utilizzare za, zc, zo.


Non è necessario utilizzare il vimrc, non l'ho mai fatto poiché uso solo occasionalmente la piega
Anthon,

@Anthon: Oh, certo. Aggiungerò ulteriori informazioni nella mia risposta.
cuonglm
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.