web-dev-qa-db-fra.com

Comment voir quels plugins ralentissent Vim?

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

291
charlax

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.

460
ZyX

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.

70
feihu

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.)

28
Ingo Karkat

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.

14
Prince Goulash

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:

  1. Ouvrez un fichier qui provoque des problèmes de performances en soulignant la syntaxe.
  2. Exécutez :syntime on pour démarrer le profilage.
  3. Faites défiler le fichier un peu.
  4. Exécutez :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.
5
duskwuff