Il faut environ une seconde et demie à ZSH pour créer une nouvelle fenêtre de terminal et être prêt. Je suis à peu près sûr que le coupable est compinit
.
Je n'ai pas réussi à trouver une bonne documentation sur compinit,
, mais il semblerait qu'il faille mettre en cache tous les éléments nécessaires dans un fichier tel que .zcompdump
.
Des astuces pour l'accélérer?
oh-my-zsh
prenait environ 1,5 seconde pour démarrer sur mon ordinateur portable. J'ai écrit certaines des mesures que j'ai prises pour réduire le temps à environ 0,25 seconde .
Une autre bonne âme a résumé les étapes nécessaires pour intégrer mes modifications dans votre copie de oh-my-zsh.
Le plus gros problème est que compinit
était appelé un tas de temps supplémentaires au lieu d'une seule fois après que le fpath ait été complètement défini. J'ai apporté ces modifications sur ma branche de oh-my-zsh
sur github. Les changements ont été discutés sur github et ils semblent bien fonctionner pour quelques personnes. Espérons que les modifications seront fusionnées dans oh-my-zsh
dans un proche avenir.
Bien que ZSH ait son lot de ralentissements, si vous trouvez la fenêtre du terminal vierge pendant quelques instants avant de voir la ligne Last Login:
, vous devrez effacer vos fichiers journaux pour améliorer la vitesse. Cela reste un problème pour OSX Lion et devra être fait tous les plusieurs mois. Lame, je sais.
La commande est:
Sudo rm -rf /private/var/log/asl/*.asl
Bien sûr, vous avez besoin de lire cet article à l'avance et vous savez donc exactement ce qui se passe, parce que tout ce qui dit Sudo rm
doit être pensé. Je ne mets cela que ici parce que votre utilisation de ZSH prouve votre compétence avec la ligne de commande pour commencer.
Ma plus grande amélioration provient de la suppression d'éléments de la section plugin = (). Les plugins 'github' et 'brew' sont très lents à charger.
J'ai également supprimé hub que j'avais comme alias Algit
et qui accélérait également l'invite.
J'ai utilisé '/ usr/bin/time zsh -i -c exit' pour enregistrer les temps de démarrage, mais compinit
ne semble pas faire une différence assez importante pour moi.
Ce serait formidable d'entendre ce que les autres font pour accélérer les choses.
Utilisez-vous le /bin/zsh
pré-installé ou un autre? Je demande, parce que le zsh que j'ai installé via fink commence terriblement lentement à cause de son inclusion de modèles zsh , tandis que la vanille démarre tout de suite.
Est-ce que courir avec un fichier de vidage explicite (compinit -d dumpfile
) accélère le processus? La page de manuel indique que
Le prochain appel de compinit lira le fichier vidé au lieu d’effectuer une initialisation complète.
Zsh seul démarre en environ 0,1 seconde pour moi, ce qui est amplement suffisant. Je viens de remarquer que lorsque je me rapprochais de la marque de l'historique des commandes 50 000, le chargement de la première invite devenait plus proche de 3 secondes.
Je ne sais pas comment vous trouvez toutes ces autres raisons de la lenteur du démarrage, mais la mienne était exactement ce que je devinais au départ. J'ai fait un mv ~/.zsh_history zsh_history_backup
et bam, le démarrage de 3 secondes est maintenant un démarrage de 0,1 seconde. Curieusement, /usr/bin/time /bin/zsh -i -c exit
ne parvient pas à capturer le temps nécessaire au chargement de l'historique.
Si vous n'avez pas des dizaines de milliers de commandes dans votre historique zsh, ce n'est pas ça. Mon ~/.zsh_history
mesuré 1,8MB. Il est tout à fait possible de coller accidentellement un gros morceau de contenu en tant que commande dans un terminal. Cela va également gonfler l’historique rapidement (bien que ce soit quelque chose de vraiment à éviter, car il peut évidemment être extrêmement destructeur).
Maintenant, oh-my-zsh vérifie l'option de configuration spéciale de git oh-my-zsh.hide-status avant de demander le statut. Donc courir
git config oh-my-zsh.hide-status 1
sur un dépôt problématique.
J'utilisais le thème "af-magic"
Passer à "muse" a résolu le problème.
Éditez ~/.zshrc et modifiez cette ligne:
#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"
Ajoutez ce qui suit à votre ~/.zshenv
skip_global_compinit=1
J'ai vraiment amélioré ma vitesse après avoir effacé le répertoire ~/.oh-my-zsh/plugins /. Il y avait beaucoup de plugins inutilisés à l'intérieur.