Die Syntax foldmethod
ist großartig, aber manchmal möchte ich die Kommentare einfach in einer Quelldatei zusammenfassen.
Auch das Syntaxfalten von Kommentaren funktioniert nur für C-Style-Kommentare wie:
/*
...
*/
Aber nicht für Kommentare wie:
//
//
// ...
//
Oder auch für Kommentarblöcke in nicht C-ähnlichen Sprachen wie:
#
#
# ...
#
Wie kann ich das mit vim konfigurieren?
Antworten:
Es ist ziemlich einfach, nur die Kommentare zu falten, indem Sie Folgendes verwenden
foldmethod=expr
:Dies prüft einfach, ob die Zeile mit einem Leerzeichen + einem Kommentarzeichen beginnt. Beachten Sie, dass dies ziemlich naiv ist und möglicherweise nicht für alle Sprachen funktioniert. Vielleicht möchten Sie ein AutocMD verwenden, um genauer zu sein:
Weitere Informationen zu fold-expr finden Sie unter:
:help fold-expr
:help folding-functions
Das Syntaxfalten und Kommentarfalten ist komplizierter. Dies würde eine Änderung der Syntaxdatei in erfordern
/usr/share/vim/vim74/syntax/*.vim
und ist spezifisch für die von Ihnen verwendete Sprache.Beachten Sie, dass einige Dateitypen dies bereits tun! Zum Beispiel von
ruby.vim
:quelle
Ich mag es, mit Einzug zu falten, aber die Kommentare in die Falte einzubeziehen (ich meine, jeder Kommentar hat die gleiche Faltebene wie die vorherige Zeile).
Leider funktioniert das Schlüsselwort foldignore nur für einzeilige Kommentare. Also folge ich mit expr in vimrc:
Der letzte Block:
Gibt eine Foldlevel-Basis für den Einzug zurück.
Und die andere :
Überprüft, ob das erste Zeichen der Zeile als Kommentar in der Syntax berücksichtigt wird. So ist es eine gute Möglichkeit, Einzugs- und Syntaxfaltung mit Ausdruck zu verbinden, der fortschrittlichsten Faltung.
Beachten Sie, dass Sie auch "Falttext festlegen" können, je nachdem, wie das Ergebnis aussehen soll.
quelle
Sie können einen kommentierten Block mit visuell auswählen
vac
und dann eine manuelle Falte erstellenzf
.Das Kommentartextobjekt kann eine Spracherweiterung zum Festlegen von Standard-VIM-Textobjekten sein. Getestet mit Go-Syntax.
quelle
ac
ist kein eingebaut. Bei tpopes Kommentargc
handelt es sich jedoch um ein Textobjekt . Also bessere Lösungen sindzfac
,zfgc
oderzfip
im schlimmsten Fall