Comment pliez-vous les fonctions automatiquement?

12

Existe-t-il un moyen de créer des fonctions de pliage Vim basées sur la syntaxe d'une déclaration de fonction?

Par exemple, avoir vim tourner une fonction comme celle-ci:

def foobar(foo,bar):
  if foo > bar:
    print "foo"
  elif foo < bar:
    print "bar"
  elif foo == bar:
    print "foobar"

En cela:

+----- 7 lines: def foobar(foo,bar): -------------------------------------------------------------

Existe-t-il un ensemble de commandes ou une fonction que je peux mettre dans mon fichier .vimrc pour y parvenir?

Dom
la source

Réponses:

12

Étant donné que votre exemple est en Python, qui repose sur une indentation correcte des blocs de code, il suffit de baser le pliage sur cela:

:set foldmethod=indent

Pour plus d'informations sur les variétés de pliage disponibles, voir : help foldmethod

jalanb
la source
7

Sûr:

set foldmethod=syntax

Vous pouvez ensuite utiliser zcpour fermer un pli, zopour en ouvrir un ou zapour basculer.

Malheureusement, Vim n'inclut pas les informations de pliage pour Python par défaut, que vous semblez utiliser. Vous pouvez cependant utiliser l' une des nombreuses ressources externes .

Poignée de porte
la source
3
Pour que cela fonctionne, le fichier de syntaxe que vous utilisez doit utiliser syn-fold. dans mon installation de vim74, seulement environ 10% des fichiers de syntaxe l'utilisent.
jalanb