Jak automatycznie składasz funkcje?

12

Czy istnieje sposób, aby funkcje składania Vima były oparte na składni deklaracji funkcji?

Na przykład posiadanie vima włącza taką funkcję:

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

Zaangażowany w to:

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

Czy istnieje jakiś zestaw poleceń lub funkcja, którą można umieścić w pliku .vimrc, aby to osiągnąć?

Dom
źródło

Odpowiedzi:

12

Biorąc pod uwagę, że twój przykład znajduje się w Pythonie, który opiera się na poprawnym wcięciu bloków kodu, wystarczy oprzeć składanie na tym:

:set foldmethod=indent

Aby uzyskać więcej informacji o dostępnych odmianach składania, patrz : help foldmethod

jalanb
źródło
7

Pewnie:

set foldmethod=syntax

Następnie możesz użyć zcdo zamknięcia klapki, zootwarcia jednej lub zaprzełączenia.

Niestety, Vim nie zawiera domyślnie informacji o zwijaniu dla Pythona, których prawdopodobnie używasz. Możesz jednak użyć jednego z wielu zewnętrznych zasobów .

Klamka
źródło
3
Aby to zadziałało, należy skorzystać z używanego pliku składni syn-fold. w mojej instalacji vim74 używa go tylko około 10% plików składniowych.
jalanb