¿Cómo se pliegan las funciones automáticamente?

12

¿Hay alguna manera de hacer que Vim pliegue funciones basadas en la sintaxis de una declaración de función?

Por ejemplo, hacer que vim active una función como esta:

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

Dentro de esto:

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

¿Hay algún conjunto de comandos o una función que pueda poner en mi archivo .vimrc para lograr esto?

Dom
fuente

Respuestas:

12

Dado que su ejemplo está en Python, que se basa en la sangría correcta de los bloques de código, es suficiente basar el plegado en eso:

:set foldmethod=indent

Para obtener más información sobre las variedades de plegado disponibles, consulte : ayuda método de plegado

jalanb
fuente
7

Por supuesto:

set foldmethod=syntax

Luego puede usar zcpara cerrar un pliegue, zoabrir uno o zaalternar.

Desafortunadamente, Vim no incluye información de plegado para Python por defecto, que parece estar usando. Sin embargo, podría usar uno de los muchos recursos externos .

Perilla de la puerta
fuente
3
Para que esto funcione, debe utilizar el archivo de sintaxis que está utilizando syn-fold. en mi instalación de vim74, solo alrededor del 10% de los archivos de sintaxis lo usan.
jalanb