Les replis

De Vim-fr
Révision de 6 août 2013 à 12:23 par Mo0O (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)


Ébauche.png

Cette page est une ébauche concernant ViM, n'hésitez pas à l'améliorer en partageant vos connaissances.

Qu'est-ce qu'un repli ?

Les replis sont un mécanisme de Vim très intéressant. Par repli (ou "fold" en anglais, si vous voulez trouver quelque chose dans l'aide de Vim), il faut comprendre que vos fichiers seront raccourcis, "pliés" sur eux-mêmes de sorte à en masquer des extraits. L'intérêt ? N'afficher à l'écran que les passages d'un code source qui vous intéressent en un instant précis par exemple ! Les replis permettent également d'activer un autre mode de déplacement dans les fichiers (de repli en repli), ce qui n'est pas sans déplaire !

J'ai conscience que l'explication textuelle n'est peut-être pas très parlante. Aussi, voici un exemple :

Erreur lors de la création de la miniature : Fichier manquant


Avant d'aller plus loin, commençons par préciser que toutes les commandes Vim concernant les replis commencent par un "z" : il est souvent donné comme moyen mnémotechnique la comparaison du "z" et d'une feuille de papier pliée...

Création des replis

Il existe plusieurs façons de créer des replis. Parmi celles-ci, la plus évidente est la création manuelle qui est active par défaut. Pour les autres, il vous faudra renseigner le paramètre foldmethod dans votre fichier ~/.vimrc, ou dans la ligne de commande vim comme ceci :

:set foldmethod=mamethode

Méthode manuelle

Analyse syntaxique

Recherche de marqueurs

Observation du niveau d'indentation

Mode différentiel

Mode de définition des niveaux de replis

Navigation dans les replis

Déplacements simples

Pour se déplacer dans les replis, rien de plus simple ! Je vous disais que les commandes commencent par un "z", alors si vous êtes familier du mode de déplacement du curseur caractère par caractère, vous connaissez déjà le déplacement par repli : il s'agit de préfixer les mêmes commandes du fameux "z".

  • zj permet d'atteindre le repli suivant,
  • zk, au contraire, remontera le fichier d'un repli.

Dès lors, rien ne vous empêche d'ajouter un nombre avant la commande de déplacement pour sauter un certain nombre de replis. Par exemple, 3zj vous emmènera... 3 replis plus bas.

  • ]z positionne le curseur sur la fermeture du repli,
  • [z a le comportement inverse : il vous emmène au début du repli qui entoure votre curseur au moment où la commande est saisie.

L'ouverture et la fermeture de niveaux de replis

Dans la mesure où les replis peuvent en contenir d'autres (et être ainsi imbriqués), il peut être utile, lorsque vous travaillez sur vos fichiers, de déplier un peu plus ou un peu moins votre code source pour avoir plus ou moins de détails.

Pour ce faire, retenez que la commande zr ouvre un niveau supplémentaire de replis (si aucun repli n'est ouvert, tous les replis de "niveaux 1" sont ouverts; et si zr est saisi de nouveau, tous leurs replis de "niveaux 2" cette fois, sont ouverts). Le contraire de zr est zm, qui permet de fermer de plus en plus de niveaux de replis.

Notez que la commande zR ouvrira tous les replis du fichier et que, respectant la même logique, la commande zM les refermera tous...

Enregistrement des états des replis

Pour enregistrer l'état actuel des replis :mkview

Pour le charger :loadview

Les replis en bref !

Les commandes utiles pour les replis sont donc les suivantes :

  • zo et zO (ouvre le repli sous le curseur ou tous les replis successifs entourant le curseur),
  • zc (ferme le repli sous le curseur),
  • zr et zR (ouvre un niveau de repli supplémentaire ou tous les niveaux de replis),
  • zm et zM (ferme un niveau de repli supplémentaire ou tous les niveaux de replis),
  • zf (permet de créer manuellement un repli, en mode visuel ou couplé avec un déplacement),
  • zd et zE (supprime le repli sous le curseur ou tous les replis du fichier),
  • zj et zk (se déplace respectivement au repli du bas ou du haut),
  • [z et ]z (atteint l'ouverture ou la fermeture du repli actif).
  • za ouvre ou ferme le repli de manière alternée.
  • zA ouvre ou ferme le repli et les replis imbriqué (exemple : une classe est ces methodes) de manière alternée.