Est-il possible 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
Vous pouvez utiliser la prise en charge intégrée du profilage: après le lancement de vim do
:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!
(contrairement à quitter noautocmd
n'est pas vraiment nécessaire, cela permet simplement à vim de quitter plus rapidement).
Remarque: vous ne recevrez aucune information sur les fonctions qui avaient été supprimées avant la fermeture de vim.
J'ai trouvé une autre méthode très utile vim buildin pour afficher les messages de chronométrage exact lors du chargement de votre fichier .vimrc.
vim --startuptime timeCost.txt timeCost.txt
S'il vous plaît exécuter:
:help --startuptime
dans VIM pour obtenir plus d'informations.
Ce pourrait être un plugin ou la coloration syntaxique; essayez un :syntax off
lorsque cela se produit et voyez si Vim devient instantanément plus rapide.
Avec les plugins, une "lenteur générale" provient généralement des autocommandes; un :autocmd
les liste tous. Enquêter en tuant certains d'entre eux via :autocmd! [group] {event}
. Passez d’événements plus fréquents (par exemple CursorMoved[I]
) à des événements moins fréquents (par exemple BufWinEnter
).
Si vous pouvez reproduire la lenteur de manière assez fiable, une recherche binaire pourrait vous aider: éloignez la moitié des fichiers de ~/.vim/plugin/
, puis répétez-les dans l'ensemble qui était lent.
Si vous avez vraiment besoin de regarder sous le capot, procurez-vous une version de Vim sur laquelle la commande :profile
est activée. (Pas la version Vanilla BIG Windows, mais celle livrée avec Cygwin l’a également; l’auto-compilation est assez facile avec la plupart des distributions.)
J'ai trouvé utile d'imprimer toutes les activités de Vim dans un fichier en démarrant Vim avec l'option -V
:
vim -V12log
Ceci fournit le maximum de verbosité (niveau 12) et le sort dans le fichier log
. Vous pouvez ensuite exécuter certaines actions de Vim dont vous savez qu'elles sont lentes, puis voir quelles fonctions/mappages sont appelées en interne.
Si vous rencontrez des problèmes avec les opérations de mise à jour de l'écran (^L
, défilement, etc.) étant lents, votre problème peut être un fichier de coloration syntaxique inefficace. Vous pouvez tester cela en désactivant temporairement la coloration syntaxique (:syn off
) et en vérifiant si le problème disparaît; si vous voulez creuser 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.