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?

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


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 .


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.