2012-08-31 6 views
223

Gibt es eine Möglichkeit, Vim-Plugins zu profilieren?Wie kann man sehen, welche Plugins Vim langsam machen?

Mein MacVim wird langsamer und langsamer, wenn ich eine große .py öffne. Ich weiß, ich könnte alle Plugins abwählen und eins nach dem anderen neu 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

+3

Siehe http://stackoverflow.com/questions/1687799/profiling-vim-startup-time – chelmertz

+0

Eigentlich Startup ist in Ordnung. Vim wird nach einigen Minuten der Verwendung langsam. Es betrifft besonders '.py' Dateien. – charlax

+0

Binäre Suche * ist * der Weg zu gehen. Sie haben Ihre Frage vor 2 Stunden gestellt, die Ursache Ihres Problems wäre in dieser Zeit gefunden worden. Ingo Karkats "autocmd" -Hunch klingt für mich plausibel. – romainl

Antwort

353

können Sie integrierte in verwenden Unterstützung Profilierungs: nach vim Start tun

:profile start profile.log 
:profile func * 
:profile file * 
" At this point do slow actions 
:profile pause 
:noautocmd qall! 

(im Gegensatz zum Beenden noautocmd ist nicht wirklich erforderlich, es macht Vim nur schneller beenden).

Hinweis: Sie erhalten keine Informationen über Funktionen, die vor dem Beenden von vim gelöscht wurden.

+12

Das ist erstaunlich. Ich konnte sehen, dass EasyTags der Schuldige ist. Danke vielmals! – charlax

+1

Das hat mir wirklich geholfen. Ich fand, dass vim-signify und tagbar vim a LOT verlangsamten. Ist es nicht wert! –

+4

das half mir, "vim-gitgutter" als den Clog zu erkennen. –

11

Ich fand es hilfreich, alle Vim-Aktivität in einer Datei zu drucken, indem Sie Vim starten mit der -V Option:

vim -V12log 

Dies stellt die maximale Ausführlichkeit (Level 12) und gibt es in der Datei log aus. Sie können dann einige Vim-Aktionen ausführen, von denen Sie wissen, dass sie langsam sind, und dann sehen, welche Funktionen/Mappings intern aufgerufen werden.

+8

aber es gibt kein Timing auf das Protokoll – Kokizzu

26

Es könnte ein Plugin oder die Syntaxhervorhebung sein; versuchen Sie eine :syntax off, wenn dies passiert und sehen, ob Vim sofort schneller wird.

Bei Plugins kommt eine "allgemeine Langsamkeit" normalerweise von Autokommandos; a :autocmd listet sie alle auf. Untersuchen Sie, indem Sie einige von ihnen über :autocmd! [group] {event} töten. Gehen Sie von häufigeren Ereignissen (d. H.) zu weniger häufigen Ereignissen (z. B. BufWinEnter) über.

Wenn Sie die Langsamkeit einigermaßen zuverlässig reproduzieren können, könnte eine binäre Suche helfen: Entfernen Sie die Hälfte der Dateien in ~/.vim/plugin/, dann wiederholen Sie die anderen in der Gruppe, die langsam war.

Wenn Sie wirklich unter die Haube schauen müssen, erhalten Sie eine Vim-Version, die den :profile-Befehl aktiviert hat. (. Nicht die Vanille BIG Windows-Version, aber die, die Schiffe mit Cygwin hat, auch zur Selbst Compilieren unter den meisten Distributionen sehr einfach ist)

50

Ich fand eine weitere sehr hilfreiche vim buildin-Methode, um die genauen Timing-Nachrichten beim Laden Ihrer .vimrc anzuzeigen.

vim --startuptime timeCost.txt timeCost.txt 

Bitte führen:

:help --startuptime 

in VIM, um weitere Informationen zu erhalten.

+1

Nur für den Fall, dass jemand anderes sich wundern, gibt es das nicht in alle vim/gvim distros. Nicht in einer Aktie Win Gvim 7.4 hier (obwohl es in viminfo dokumentiert ist) – thynctank

+1

@thynctank Ich versuchte auf meinem gvim 7.4 und es funktionierte. Hier ist meine Version 'IM - Vi IMproved 7.4 (2013 Aug 10, zusammengestellt 10. August 2013 14:33:40)' – feihu

+0

Beste Antwort! Hat mir geholfen, das langsamste Plugin zu identifizieren, das mich bei jedem Start wütend gemacht hat. Danke :) – kovpack

Verwandte Themen