Existe-t-il un moyen de profiler les plugins Vim?
Mon MacVim devient de plus en plus lent lorsque j'ouvre un grand .py
. Je sais que je pourrais désélectionner tous les plugins et resélectionner un par un pour vérifier quel plugin est le coupable, mais existe-t-il un moyen plus rapide?
Mon dotvim est ici: https://github.com/charlax/dotvim
debugging
optimization
vim
macvim
charlax
la source
la source
.py
fichiers.autocmd
intuition d' Ingo Karkat me semble la plus plausible.autocmd
ça a l'air cool. Je viens de l'essayer, mais Vim n'est pas lent en ce moment.folding=syntax
peut ralentir. Essayéfolding=manual
et maintenant tout fonctionne bienRéponses:
Vous pouvez utiliser le support de profilage intégré: après avoir lancé vim do
(contrairement à l'arrêt, ce
noautocmd
n'est pas vraiment nécessaire, cela accélère juste la sortie de vim).Remarque: vous n'obtiendrez pas d'informations sur les fonctions qui ont été supprimées avant la fermeture de vim.
la source
:set more | verbose function {function_name}
vous montrera le contenu de la fonction et où il se trouve.profile.log
est un fichier dans le répertoire courant de votre session Vim.profile.log
pour voir la liste des fonctions triées par durée totale (profile.log
me paraissait inutile avant de la trouver il y a une liste triée à la fin).J'ai trouvé une autre méthode de construction de vim très utile pour afficher les messages de synchronisation exacte lors du chargement de votre .vimrc.
Veuillez exécuter:
dans VIM pour obtenir plus d'informations.
la source
IM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
-V
ont montré qu'il s'agissait d'un$HOME
problème non local à l'origine du problème:e
pour actualiser le fichier. Trier le fichier en place en fonction du temps total pris pour chaque opération comme ça:%! sort -k2 -nr
Il peut s'agir d'un plugin ou de la coloration syntaxique; essayez un
:syntax off
quand cela se produit et voyez si Vim devient instantanément plus rapide.Avec les plugins, une "lenteur générale" vient généralement des autocommandes; a les
:autocmd
répertorie tous. Enquêter en tuant certains d'entre eux via:autocmd! [group] {event}
. Passer d'évènements plus fréquents (ieCursorMoved[I]
) à des évènements moins fréquents (egBufWinEnter
).Si vous pouvez reproduire de manière assez fiable la lenteur, une recherche binaire peut vous aider: Éloignez la moitié des fichiers de
~/.vim/plugin/
, puis l'autre, répétez dans l'ensemble qui était lent.Si vous avez vraiment besoin de regarder sous le capot, obtenez une version Vim dont la
:profile
commande est activée. (Pas la version Windows vanille BIG, mais celle qui est livrée avec Cygwin l'a; aussi, l'auto-compilation est assez facile dans la plupart des distributions.)la source
J'ai trouvé utile d'imprimer toutes les activités de Vim dans un fichier en démarrant Vim avec l'
-V
option:Cela fournit la verbosité maximale (niveau 12) et la renvoie dans le fichier
log
. Vous pouvez ensuite effectuer certaines actions Vim que vous savez être lentes, puis voir quelles fonctions / mappages sont appelés en interne.la source
Si vous rencontrez des problèmes avec les opérations de mise à jour d'écran (
^L
, défilement, etc.) qui sont lentes, votre problème peut être un fichier de surbrillance de syntaxe inefficace. Vous pouvez tester cela en désactivant temporairement la coloration syntaxique (:syn off
) et en voyant si le problème disparaît; si vous voulez fouiller dans les détails, vous pouvez profiler le fichier de syntaxe actuel en utilisant:syntime
::syntime on
pour démarrer le profilage.:syntime report
pour générer un rapport. Les modèles énumérés en premier dans le rapport sont ceux qui ont pris le plus de temps à traiter.la source