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?

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


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 .


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.