Inizialmente, utilizzo il set foldmethod = marker e sposta il cursore su {di una funzione, usa lo zf% per piegare la funzione corrente. Ma ci sono molte funzioni in questo file. Come posso piegare tutte le funzioni in questo file? E non voglio piegare {} nelle funzioni.Come posso piegare automaticamente tutte le funzioni in un file con vim?
risposta
Se si dispone di :set foldmethod=syntax
le pieghe verranno specificate dalle definizioni di sintassi. Se preferisci puoi :set foldmethod=indent
per far rientrare il rientro nelle pieghe.
È possibile chiudere tutte le pieghe con zM
. Se hai fold nidificati e vuoi passare livello per livello, usa zm
. Per aprire le pieghe utilizzare zR
(tutto) e zr
(livello per livello).
Penso che tu abbia frainteso il mio significato. In un primo momento, ho bisogno di impostare la piega per ogni funzione. Voglio solo sapere come impostare la piega per tutte le funzioni nel primo tempo. –
@Yongwei: ok, penso di averlo capito ora. Questo è quello che volevi? –
zR e zm non funzionano dopo aver impostato foldmethod = sintassi –
Se ogni funzione ha la sua parentesi graffa aperta sulla prima colonna si potrebbe fare:
:%g/^{/normal! zf%
Forse è più chiaro in questo modo:
:%g /^{/ normal! zf%
il comando g
seleziona linee secondo il seguente pattern ed esegue un comando ex (qui normal!
per riprodurre i tasti in modalità normale).
Vedi :help :g
e :help :normal
Io uso questo - grazie tuttavia come si può evitare di piegare attraverso le funzioni? sembra che non siano solo le funzioni – serup
mi sono imbattuto in questo quando ero alla ricerca di una cosa simile. Ovviamente lo avresti già capito, ma a beneficio di altre persone risponderò comunque.
è necessario mettere le seguenti righe nel tuo Vimrc:
set foldmethod=syntax
set foldnestmax=1
set foldlevel=0
sarà piegare tutto fin dall'inizio, quello che viene ment essere piegato. A seconda della lingua e della funzione di piegatura, il contenuto della piegatura può variare.
'zM' fare la stessa cosa. – MOHRE
Prova :%g/\(function\_.\{-}\)\@<={/ normal! f{zf%
Spiegate a poco a poco:
:%g
- cercare globaly in un intero file
/\(function\_.\{-}\)\@<={/
- modello per trovare prima '{' dopo ogni 'funzione' e mettere il cursore sulla iniziare di stringa con quello '{'
normal! f{zf%
- eseguire in avanti a '{' f{
e fare piega con mossa '%' zf%
su tha t stringa
non è riuscito a far funzionare il tuo comando - forse mostra le funzioni di esempio – serup
stavo cercando di fare lo stesso e ha finito per fare semplicemente:
setlocal foldmethod=marker
setlocal foldmarker={,}
usa il metodo piega marcatore e cambia il marcatore in una singola parentesi graffa (per impostazione predefinita il marcatore è {{{
).
Mi è piaciuto molto, molto utile! Ma dovrei dividere le linee che chiudono una parentesi e ne aprono un'altra (come "} else {") –
Le distribuzioni vim di FYI vengono di solito fornite con la guida incorporata. Se digiti ': help fold' puoi vedere tutte le cose relative alle pieghe. –
Dovrai aggiungere la lingua che ti interessa (non tutte le lingue hanno {} per cominciare!); piegare in Vim è un argomento a sé stante. – Rook