Gibt es eine Möglichkeit, Vim-Plugins zu profilieren?
Mein MacVim wird langsamer und langsamer, wenn ich ein großes öffne .py
. Ich weiß, ich könnte alle Plugins abwählen und nacheinander erneut auswählen, um zu überprüfen, welches Plugin der Schuldige ist, aber gibt es einen schnelleren Weg?
Mein dotvim ist hier: https://github.com/charlax/dotvim
debugging
optimization
vim
macvim
charlax
quelle
quelle
.py
Dateien.autocmd
klingt für mich am plausibelsten.autocmd
sieht gut aus. Ich habe es gerade versucht, aber Vim ist momentan nicht langsam.folding=syntax
kann langsamer werden. Versucht mitfolding=manual
und jetzt funktioniert alles gutAntworten:
Sie können die integrierte Profilerstellungsunterstützung verwenden: Nach dem Start von vim do
(Anders als das Beenden
noautocmd
nicht wirklich erforderlich ist, beschleunigt es das Beenden von vim nur).Hinweis: Sie erhalten keine Informationen zu Funktionen, die vor dem Beenden von vim gelöscht wurden.
quelle
:set more | verbose function {function_name}
zeigt Ihnen den Funktionsinhalt und wo er sich befindet.profile.log
eine Datei im aktuellen Verzeichnis Ihrer Vim-Sitzung.profile.log
, um die Liste der Funktionen nach Gesamtzeit sortiert zu sehen (profile.log
schien mir nutzlos, bevor ich fand, dass es am Ende eine sortierte Liste gibt).Ich habe eine andere sehr hilfreiche vim-Erstellungsmethode gefunden, um die genauen Timing-Meldungen beim Laden Ihrer .vimrc anzuzeigen.
Bitte renne:
in VIM, um weitere Informationen zu erhalten.
quelle
IM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
-V
zeigte es sich um eine nicht-lokale war$HOME
das Problem verursacht:e
, um die Datei zu aktualisieren. Sortieren Sie die Datei an Ort und Stelle nach der Gesamtzeit, die für jede Operation benötigt wird:%! sort -k2 -nr
Es kann sich um ein Plugin oder eine Syntaxhervorhebung handeln. Versuchen Sie es
:syntax off
in diesem Fall und prüfen Sie, ob Vim sofort schneller wird.Bei Plugins kommt eine "allgemeine Langsamkeit" normalerweise von Autobefehlen; a
:autocmd
listet sie alle auf. Untersuchen Sie, indem Sie einige von ihnen über töten:autocmd! [group] {event}
. Gehen Sie von häufigeren Ereignissen (dhCursorMoved[I]
) zu weniger häufigen Ereignissen (zBufWinEnter
. B. ) über.Wenn Sie die Langsamkeit einigermaßen zuverlässig reproduzieren können, kann eine binäre Suche hilfreich sein: Verschieben Sie die Hälfte der Dateien weg
~/.vim/plugin/
und wiederholen Sie die andere in dem Satz, der langsam war.Wenn Sie wirklich unter die Haube schauen müssen, besorgen Sie sich eine Vim-Version, für die der
:profile
Befehl aktiviert ist. (Nicht die Vanilla BIG Windows-Version, sondern die im Lieferumfang von Cygwin enthaltene Version; auch das Selbstkompilieren ist in den meisten Distributionen recht einfach.)quelle
Ich fand es hilfreich, alle Vim-Aktivitäten in eine Datei zu drucken, indem ich Vim mit der folgenden
-V
Option starte:Dies bietet die maximale Ausführlichkeit (Stufe 12) und gibt sie in die Datei aus
log
. Sie können dann einige Vim-Aktionen ausführen, von denen Sie wissen, dass sie langsam sind, und dann sehen, welche Funktionen / Zuordnungen intern aufgerufen werden.quelle
Wenn Sie Probleme mit
^L
langsamen Bildschirmaktualisierungsvorgängen ( , Bildlauf usw.) haben, liegt das Problem möglicherweise an einer ineffizienten Syntaxhervorhebungsdatei. Sie können dies testen, indem Sie die Syntaxhervorhebung (:syn off
) vorübergehend deaktivieren und prüfen , ob das Problem behoben ist. Wenn Sie sich mit den Details befassen möchten, können Sie die aktuelle Syntaxdatei folgendermaßen profilieren:syntime
::syntime on
, um die Profilerstellung zu starten.:syntime report
, um einen Bericht zu generieren. Die zuerst im Bericht aufgeführten Muster haben die meiste Zeit für die Verarbeitung benötigt.quelle