web-dev-qa-db-fra.com

Comment activer et utiliser le pliage de code dans Vim?

Comment puis-je activer et faire le pliage de code dans Vim?

Dois-je changer quoi que ce soit dans ~/.vimrc?

J'écris z+a et z+c et z+o et rien ne se passe.

Voici un article sur le pliage: pliage de code dans Vim .

54

Non, vous n'avez pas besoin de mettre la commande à partir de la page à laquelle vous avez lié dans votre ~/.vimrc, vous pouvez simplement les saisir après avoir émis : dans vim pour obtenir l'invite de commande.

Cependant, si vous mettez les lignes:

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

comme indiqué dans le lien que vous avez donné, dans votre ~/.vimrc, vous n'avez pas besoin de les saisir chaque fois que vous souhaitez utiliser le pliage dans un fichier. Le set nofoldenable s'assure qu'à l'ouverture, les fichiers sont "normaux", c'est-à-dire non pliés.

48
Anthon

Plier par défaut

La méthode de pliage par défaut de Vim est manual ce qui signifie que les plis sont créés manuellement; sinon, il n'y a pas de pli à fermer ou à ouvrir avec zazo, ou zc comme vous l'avez décrit. Mais, vous pouvez créer un pli en zf{motion} en mode Normal ou zf en mode Visuel ; par exemple. zfj crée un pli pour la ligne courante et la suivante en mode Normal .

Pli par indent

La réponse acceptée, par @Anthon, décrit comment définir la méthode de pliage sur indent; c'est-à-dire que le pliage est défini par le niveau d'indentations.

Pli par syntax

De manière plus pratique, les plis peuvent être créés automatiquement en fonction de la syntaxe de la langue du tampon actuel. Si vous utilisez un langage de programmation, appelons-le [~ # ~] l [~ # ~] , et vous avez une définition repliable de [~ # ~] l [~ # ~] (par exemple, vous avez installé un plugin Vim dans lequel les informations de pliage de [ ~ # ~] l [~ # ~] est défini, tel que c.vim pour C/C++, ou mode python pour Python), il vous suffit de définir la méthode de pliage sur syntax:

set foldmethod=syntax

C'est ça. Les commandes les plus utiles pour travailler avec les plis sont:

  • zo ouvre un pli au niveau du curseur.
  • zShift+o ouvre tous les plis au niveau du curseur.
  • zc ferme un pli au niveau du curseur.
  • zm augmente le foldlevel de un.
  • zShift+m ferme tous les plis ouverts.
  • zr diminue le foldlevel de un.
  • zShift+r diminue le foldlevel à zéro - tous les plis seront ouverts.
48
cartoonist

Vous n'avez pas à l'utiliser systématiquement: je sélectionne généralement manuellement les plis par le mouvement ou la section. Par exemple, le pliage d'un paragraphe est zfip et le pliage des 20 lignes suivantes est zf20j. Utilisez za pour basculer et zd pour supprimer.

Cela nécessite un peu plus de travail mais permet à votre pliage de refléter la tâche à accomplir.

15
Marmaduke

Vous pouvez activer folding dans la session en cours comme la réponse de @ Anthon. Mais si vous voulez le rendre permanent, vous devez définir au moins cette ligne dans .vimrc aux travaux de pliage:

set foldmethod=indent

indent est une sorte de pliage, vous pouvez en voir plus sur :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.

Maintenant, chaque fois que vous ouvrez un fichier avec vim, vous pouvez voir que le code est plié par la méthode que vous avez définie. Ensuite, vous pouvez utiliser za, zc, zo.

4
cuonglm