65 votes

Comment puis-je plier automatiquement toutes les fonctions dans un fichier avec vim ?

Au début, j'utilise le set foldmethod=marker, et déplace le curseur sur le { d'une fonction, utilise le zf% pour plier la fonction actuelle. Mais il y a beaucoup de fonctions dans ce fichier. Comment puis-je plier toutes les fonctions de ce fichier ? Et je ne veux pas plier {} dans les fonctions.

120voto

Si vous :set foldmethod=syntax les plis seront spécifiés à partir des définitions de syntaxe. Si vous préférez, vous pouvez :set foldmethod=indent pour que l'indentation définisse les plis.

Vous pouvez fermer tous les plis avec zM . Si vous avez des plis imbriqués et que vous souhaitez plier niveau par niveau, utilisez zm . Pour ouvrir les plis, utilisez zR (tous) et zr (niveau par niveau).

11voto

Benoit Points 35553

Si chaque fonction a son accolade ouvrante sur la première colonne, vous pouvez faire :

 :%g/^{/normal! zf%

C'est peut-être plus clair ainsi :

 :%g /^{/ normal! zf%

la commande g sélectionne les lignes selon le modèle suivant, et exécute une commande ex (ici normal! pour jouer les frappes en mode normal).

Voir :help :g et :help :normal

9voto

pavan Points 19

Je suis tombé sur ça quand je cherchais une chose similaire. Vous auriez évidemment compris cela maintenant, mais pour le bénéfice des autres, je vais quand même y répondre.

Vous devez mettre les lignes suivantes dans votre .vimrc :

 set foldmethod=syntax
set foldnestmax=1

8voto

ldigas Points 19740
set foldlevel=0

pliera tout depuis le début, ce qui doit être plié. Selon la langue et votre fonction de pliage, le contenu du pli peut varier.

5voto

mrtnmgs Points 575

J'essayais de faire la même chose et j'ai fini par faire simplement :

 setlocal foldmethod=marker
setlocal foldmarker={,}

Il utilise la méthode de pliage du marqueur et remplace le marqueur par une seule accolade (par défaut, le marqueur est {{{ ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X