17 points par GN⁺ 2026-01-11 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Oh My Zsh (OMZ) reste largement recommandé, mais entraîne une surcharge de scripts inutile qui ralentit le démarrage du shell
  • OMZ étant écrit en scripts shell, tous les scripts doivent être interprétés à chaque ouverture d’un nouvel onglet de terminal, ce qui provoque environ 0,38 seconde de latence même avec la configuration par défaut
  • Avec une configuration minimale de Zsh, le prompt Starship et une recherche dans l’historique basée sur fzf, il est possible de ramener le temps de démarrage à 0,07 seconde
  • Starship construit le prompt à partir d’un binaire unique, remplaçant ainsi les plugins git, environnement virtuel et spécifiques aux langages habituellement fournis par OMZ
  • Plutôt que des plugins complexes, une configuration de shell allégée où l’on ajoute soi-même uniquement les fonctions nécessaires est plus efficace

Problèmes de performances d’Oh My Zsh

  • Oh My Zsh (OMZ) reste très utilisé, mais sa surcharge inutile (bloat) dégrade la vitesse de démarrage du shell
    • OMZ est composé de scripts shell, qui doivent tous être interprétés à chaque ouverture d’un nouvel onglet de terminal
    • Avec une configuration incluant les plugins de base (git, zsh-autosuggestions, zsh-autocomplete), l’exécution de /usr/bin/time -f "%e seconds" zsh -i -c exit prend 0,38 seconde
  • Ouvrir un nouvel onglet dans un dossier de dépôt git entraîne une latence ressentie d’environ 1 seconde
  • OMZ vérifie périodiquement les mises à jour, ce qui peut ajouter plusieurs secondes de latence
  • Mettre à jour fréquemment sa configuration shell est inutile ; il est recommandé d’opter pour une configuration simple où l’on ajoute directement uniquement ce dont on a besoin

Configuration minimale de Zsh

  • La configuration minimale de Zsh proposée est la suivante
    export HISTSIZE=1000000000
    export SAVEHIST=$HISTSIZE
    setopt EXTENDED_HISTORY
    setopt autocd
    autoload -U compinit; compinit
    
    • HISTSIZE et SAVEHIST définissent la taille de l’historique des commandes
    • EXTENDED_HISTORY ajoute un horodatage à l’historique
    • autocd permet de changer de répertoire sans utiliser la commande cd
    • compinit initialise le système d’autocomplétion
  • Cette configuration suffit déjà à fournir un environnement shell de base avec complétion

Personnalisation du prompt

  • Le prompt utilise Starship
    • Starship est un prompt rapide et minimaliste constitué d’un seul binaire
    • Il remplace les plugins et thèmes d’OMZ existants, tout en affichant l’état de git, des environnements virtuels et des langages
  • Dans l’exemple de configuration Starship, les indications liées au cloud comme AWS, GCP, Azure, NodeJS, etc. sont désactivées afin de réduire le bruit visuel
  • Dans les projets Python et Rust, le langage concerné est mis en avant dans le prompt, et le temps d’exécution des commandes est également affiché
  • Il suffit d’ajouter cette ligne dans .zshrc pour l’activer
    eval "$(starship init zsh)"
    

Recherche dans l’historique

  • Le plugin zsh-autosuggestions, souvent utilisé, peut distraire l’attention en affichant des suggestions pendant la saisie
  • À la place, il est proposé d’associer fzf à Ctrl+R pour parcourir l’historique avec une recherche fuzzy interactive
    source <(fzf --zsh)
    

Résultats en matière de performances

  • Après application de cette configuration, le temps de démarrage du shell devient
    ❯ /usr/bin/time -f "%e seconds" zsh -i -c exit
    0.07 seconds
    
  • Soit un démarrage plus de 5 fois plus rapide que sous OMZ

Astuce supplémentaire

  • Les utilisateurs de Vim peuvent activer le mode Vim dans Zsh pour accélérer l’édition des commandes
    set -o vi
    bindkey -v '^?' backward-delete-char
    
    • zle utilise par défaut les raccourcis clavier d’Emacs ; ce réglage permet donc une saisie de type Vim

Conclusion et cas d’usage

  • Après avoir quitté OMZ, l’auteur s’est adapté au nouveau workflow en quelques jours
  • Les plugins nécessaires peuvent être chargés manuellement
  • S’il ouvre de nombreux onglets, c’est parce qu’il utilise tmux et un éditeur en terminal (helix) ensemble
    • Dans tmux, il lance lazygit et le gestionnaire de fichiers yazi sous forme de popups
    • Il utilise aussi des volets temporaires pour exécuter du code et afficher les sorties de test, chacun fonctionnant comme une session shell distincte

Résumé des commentaires

  • Certains utilisateurs affirment que le temps de démarrage d’OMZ, autour de 0,03 seconde, est déjà largement suffisant
  • L’auteur souligne que le plugin zsh-autocomplete dégrade les performances
  • Dans les résultats de zsh-bench, le délai jusqu’au premier prompt est mesuré à 603 ms pour OMZ, contre 103 ms pour une simple configuration Zsh
  • Starship remplace les fonctionnalités de prompt d’OMZ avec un seul outil
  • D’autres utilisateurs citent comme alternatives Zimfw, Atuin ou encore un prompt bash écrit à la main

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.