Kennt jemand eine Methode oder vielleicht ein Plug-in? Falten Sie automatisch lange Docstrings in Python? Ich habe Docstrings in meinem Code, der mehrere Seiten umfasst, so ist es schwierig, Paging zu halten durch sie. Der andere schwierige Teil ist, dass es embedded Python gibt Testcode in den Docstrings, so dass sie möglicherweise analysiert werden schwer. Beachten Sie, dass ich das ganze nur automatisch falten muss Docstring, egal was drin ist.
Vielen Dank im Voraus.
Dies ist ein bisschen ein schmutziger Hack, aber Sie können durch die Python-Syntaxdatei ( :sp $VIMRUNTIME/syntax/python.vim
) gehen und alle Syntaxregionen für Strings in dreifacher Anführungszeichen finden (nach '''
und """
suchen) und hinzufügen das Schlüsselwort fold
an das Ende dieser Anweisungen. Dann setze foldmethod=syntax
für Python-Dateien und die Kommentare sollten gefaltet werden.
Ich bin mir nicht sicher, ob es ein Plugin oder eine Automatisierung gibt, aber wenn Sie zf/
eingeben, können Sie nach etwas suchen und es wird zur nächsten Instanz gefaltet. In einem Dokument wie dem folgenden (wobei [] der Cursor ist):
Betrachten Sie zuerst edit2 für den aktualisierten Suchstring!
Wenn Sie den Befehl zf/"""[ENTER]
verwenden, sollte alles von der aktuellen Zeile (dem Anfang des Docstrings) bis zum nächsten Vorkommen von """
, das das Ende des Docstrings sein sollte, gefaltet werden.
Ich weiß, dass das keine Automatisierung ist, aber vielleicht hilft es in der Zwischenzeit oder führt Sie auf den richtigen Weg zur Automatisierung. Siehe Edit2 für eine bessere Suchfunktion, obwohl ich immer noch nicht weiß, wie man automatisiert.
Hoffe, das hilft.
Bearbeiten : Als Konsequenz können Sie nach einem beliebigen Docstring mit /"""\_.\{-}"""
suchen, obwohl dies auch den Code innerhalb des Docstrings zurückgibt. Um nach einer Funktionsdefinition gefolgt von einem Docstring zu suchen, können Sie /def\_.\{-}"""\_.\{-}"""
verwenden, obwohl dies innerhalb des Docstrings zu einem Def führt.
Edit2 : Tatsächlich haben einige mehr mit Regexs dazu geführt: /def.\{-}):\_s*"""\_.\{-}"""
, die irgendeine Funktion finden sollten, gefolgt von einem Docstring. Es sucht nach def
gefolgt von irgendwelchen Zeichen, dann ):
, gefolgt von einem Newline und / oder Leerzeichen, gefolgt von """
, gefolgt von einer beliebigen Anzahl von Zeilen als der nächsten """
, aber stellt immer sicher, dass das zweite Triple-Zitat das ist eine unmittelbar nach der ersten.
Fügen Sie in Ihrer .vimrc-Datei Folgendes hinzu:
%Vor%Dies wird bei jeder Einrückung automatisch gefaltet, was in Python in Docstrings übersetzt wird. Es funktioniert SEHR SEHR nett. Versuche es. Die obige Antwort ist korrekt, erfordert aber eine Reihe von Tastenanschlägen (blah!)
Meine Lösung beinhaltet SimpylFold . Nachdem ich es mit Vundle installiert habe, lege ich das in meine vimrc
Datei:
Das macht alle Docstrings standardmäßig gefaltet, wenn Sie eine Python-Datei öffnen, was super ist.