Comment activer et utiliser le pliage de code dans Vim?

48

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

Dois-je changer quelque chose ~/.vimrc?

Je tape z+ aet z+ cet z+ oet rien ne se passe.

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

Mohammad Reza Rezwani
la source

Réponses:

40

Non , vous ne devez pas mettre la commande de la page que vous avez lié dans votre ~/.vimrc, vous pouvez simplement les taper après l' émission :dans vimpour 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 indiqué ~/.vimrc, vous ne devez pas les taper à chaque fois que vous souhaitez utiliser le pliage dans un fichier. Le set nofoldenablefait en sorte que lors de l'ouverture, les fichiers sont "normaux", c'est-à-dire non pliés.

Anthon
la source
J'ai un code qui est écrit par C, donc le courser sur l'une de ses fonctions. J'appuie sur <kbd> echa </ kbd> pour accéder à la commande. Après:, j'écris zc et rien ne se passe.
Mohammad Reza Rezwani
1
@alex le zc vous ne devriez pas taper après :. Vous tapez les setcommandes après l'invite que vous obtenez lorsque vous tapez :. Le zcvous tapez lorsque vous pouvez vous déplacer librement le curseur, comme vous utiliseriez ztpour obtenir le texte le curseur se trouve sur le haut de l'écran actuel.
Anthon
39

Plier par défaut

La méthode de pliage par défaut de Vim manualsignifie que les plis sont créés manuellement. autrement, on se replient pas à fermer ou ouvert à l' aide za, zoou zcque vous avez décrit. Cependant, vous pouvez créer un repli zf{motion}en mode normal ou zfen mode visuel . par exemple, zfjcré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 repliement sur indent; c'est-à-dire que le repliement est défini par le niveau d'indentation.

Plié par syntax

De manière plus pratique, des plis peuvent être créés automatiquement en fonction de la syntaxe de langage du tampon actuel. Si vous utilisez un langage de programmation, appelons-le L et vous avez la définition de pliage de L (par exemple, vous avez installé un plugin Vim dans lequel les informations de pliage de L sont définies; comme c.vim pour C / C ++ ou python. -mode for 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 curseur.
  • zShift+ oouvre tous les plis au niveau du curseur.
  • zc ferme un pli au curseur.
  • zmaugmente le foldlevelpar un.
  • zShift+ mferme tous les plis ouverts.
  • zrdiminue le foldlevelpar un.
  • zShift+ rdiminue le foldlevelà zéro - tous les plis seront ouverts.
dessinateur
la source
14

Vous n'avez pas à l'utiliser systématiquement: je sélectionne généralement manuellement les plis en fonction du mouvement ou de la section. Par exemple, replier un paragraphe correspond zfipaux 20 lignes suivantes zf20j. Utilisez zapour basculer et zdsupprimer.

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

Marmaduke
la source
4

Vous pouvez activer foldingla 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 le .vimrctravail de pliage:

set foldmethod=indent

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

cuonglm
la source
Il n'y a pas besoin d'utiliser le vimrc, je ne l'ai jamais fait car je n'utilise le pliage qu'occasionnellement
Anthon le
@ Anthony: Bien sûr. Je vais ajouter plus d'informations dans ma réponse.
jeudi