Wie falten Sie Funktionen automatisch?

12

Gibt es eine Möglichkeit, Vim-Fold-Funktionen basierend auf der Syntax einer Funktionsdeklaration zu erstellen?

Zum Beispiel, wenn vim eine Funktion wie diese dreht:

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

Das mögen:

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

Gibt es eine Reihe von Befehlen oder eine Funktion, die ich in meine .vimrc-Datei einfügen kann, um dies zu erreichen?

Dom
quelle

Antworten:

12

Angesichts der Tatsache, dass sich Ihr Beispiel in Python befindet, das auf dem korrekten Einrücken von Codeblöcken beruht, reicht es aus, die Faltung darauf aufzubauen:

:set foldmethod=indent

Weitere Informationen zu den verfügbaren Faltvarianten finden Sie unter : help foldmethod

Jalanb
quelle
7

Sicher:

set foldmethod=syntax

Sie können dann zceine Falte schließen, zoeine öffnen oder zaumschalten.

Leider enthält Vim standardmäßig keine Faltinformationen für Python, die Sie anscheinend verwenden. Sie können jedoch eine von vielen externen Ressourcen verwenden .

Türknauf
quelle
3
Damit dies funktioniert, sollte die von Ihnen verwendete Syntaxdatei verwendet werden syn-fold. In meiner Installation von vim74 verwenden es nur etwa 10% der Syntaxdateien.
Jalanb