Au-delà du monolithe - Organiser son workflow ZSH comme un pro
Arrêtez d'alourdir la configuration de votre shell. Découvrez pourquoi déplacer vos fonctions ZSH dans des fichiers autonomes améliore les performances et la maintenabilité, avec un navigateur de projets universel.
Traduction automatique
Cet article fait partie de la série Personnaliser votre shell avec ZSH :
- Personnalisez votre prompt Linux avec Powerlevel10k
- Comment installer Oh-My-ZSH
- Autosuggestions dans la console avec ZSH
- La coloration syntaxique dans la console avec ZSH
- Linux - Travailler avec l'historique de vos dernières commandes
- Fonctions ZSH - Personnaliser votre shell pour gérer Docker
- Au-delà du monolithe - Organiser son workflow ZSH comme un pro

Un ~/.zshrc surchargé ralentit votre terminal et transforme le débogage en cauchemar. En utilisant le fpath de ZSH et en modularisant vos fonctions dans ~/.zsh/fns, vous obtenez un démarrage instantané du shell et un code plus propre. Cet article explique le « pourquoi » et fournit une « Super Fonction » pour naviguer instantanément dans vos projets.
On y est tous passés : votre ~/.zshrc commence avec 10 lignes et finit en monstre de 1 500 lignes. Il contient tout et n'importe quoi : réglages de thème, scripts Docker complexes et alias divers que vous avez oublié avoir écrits. C'est l'anti-pattern du shell monolithique (si vous partez de zéro, commencez par mon guide d'installation de ZSH).
Dans cet article, je vais vous montrer pourquoi déplacer votre logique dans des fichiers autonomes au sein de ~/.zsh/fns et comment le mécanisme autoload de ZSH peut rendre votre terminal plus réactif que jamais. Et pour finir, je partage repo, une fonction qui va changer votre façon de naviguer dans votre workspace.
Se téléporter dans un projet
Une fois repo en place (voir plus bas), il suffit de taper un fragment du nom d'un projet pour y sauter directement — pas de cd, pas de chemin complet à taper :
Un seul projet correspondait à blg parmi tout ce qui se trouve sous ~/repositories, donc repo a complètement sauté le sélecteur et a fait un cd direct. Si plusieurs projets avaient correspondu, la même commande aurait ouvert un sélecteur fzf pré-filtré avec ces résultats.
Le problème du monolithe
Quand vous mettez une fonction directement dans votre .zshrc, ZSH doit parser et charger ce code en mémoire à chaque fois que vous ouvrez un nouvel onglet. Si vous avez des dizaines de fonctions utilitaires pour Docker, Kubernetes ou Git, ces millisecondes s'accumulent.
En déplaçant vos fonctions dans un dossier dédié (comme ~/.zsh/fns), vous gagnez trois avantages majeurs :
- Chargement paresseux : avec
autoload, ZSH ne lit le fichier que lorsque vous tapez réellement la commande. Votre shell démarre instantanément. - Maintenabilité : si une de vos fonctions casse, vous allez dans le dossier
fnset vous la corrigez. Plus besoin de scroller dans un océan de code. - Portabilité : vous pouvez versionner votre dossier de fonctions séparément et le partager entre plusieurs machines sans embarquer toute votre config spécifique à l'OS.
L'ingrédient secret : fpath et autoload
Au lieu de faire un source des fichiers, on utilise le fpath. C'est un tableau de répertoires dans lesquels ZSH cherche les définitions de fonctions.
Quand vous appelez une fonction, ZSH regarde dans ces dossiers. S'il trouve un fichier correspondant au nom de la commande, il le charge à la volée.
💎 La Super Fonction : repo (navigateur de projets universel)
En tant que développeurs, on change de contexte en permanence. On passe d'un backend PHP à un projet d'API, à un frontend Vue.js, à une application Python... et entre plusieurs dossiers de documentation — toute la journée. Faire cd ~/repositories/project-xyz des centaines de fois par jour, c'est du temps perdu.
La fonction repo utilise fd (ou find) et fzf pour vous permettre de chercher parmi tous vos repositories git et :
- Sauter dans le dossier.
- Ouvrir votre éditeur préféré (VS Code, Cursor, Neovim).
Pourquoi c'est mieux dans un fichier autonome
Cette fonction contient de la logique pour gérer la profondeur des répertoires et le lancement de l'éditeur. Dans votre .zshrc, c'est du bruit. Dans ~/.zsh/fns/repo, c'est un outil dédié.
Prérequis d'installation
Cette fonction nécessite fzf (voir Introduction to fzf si vous ne le connaissez pas encore) et fd (ou find). Pour une expérience optimale, installez fd-find.
Comment le mettre en place
1. Créer la structure
Commencez par créer le dossier où vivront vos fonctions « autonomes » :
mkdir -p ~/.zsh/fns
2. Configurer votre ~/.zshrc
Ajoutez ces lignes à votre .zshrc. C'est le seul « boilerplate » dont vous aurez besoin. Il dit à ZSH : « Regarde dans ce dossier, et si tu y trouves des fichiers, considère-les comme des fonctions que je pourrais vouloir utiliser. »
# Anonymous utilities autoloading
fpath=(~/.zsh/fns $fpath)
# -U Suppress alias expansion for standard behavior
# -z Load using zsh style
# ::t Don't load the function yet, just index it; will be loaded at the first use.
autoload -Uz ~/.zsh/fns/*(.:t)
3. Créer le fichier de la fonction repo
Créez un fichier ~/.zsh/fns/repo (sans extension !) et collez-y le code suivant.
Besoin d'aide ? Cliquez sur le bouton « Aide » ci-dessus pour les instructions de mise en place.
Remarque
Pensez à adapter la variable search_path à l'endroit où vous stockez vos projets et, si vous n'utilisez pas VSCode, à mettre aussi à jour la variable locale visual_editor.
4. L'utiliser
Ouvrez un nouveau terminal ou lancez source ~/.zshrc (puisque vous avez modifié .zshrc) et lancez simplement repo pour démarrer la fonction. Plutôt sympa, non ?
Recharger
Si vous avez déjà utilisé l'alias et que, pour une raison quelconque, vous avez modifié le code, la commande à lancer est : unfunction repo && autoload -Uz repo && repo.
Autres démos
Recherche rapide (Fuzzy Find)
Vous pouvez accélérer votre navigation en passant directement un motif de recherche à la commande : repo <pattern> — exactement l'exemple repo blg montré en début d'article.
- Si plusieurs projets correspondent à votre query,
fzfs'ouvre pré-filtré avec ces résultats. - Si un seul projet correspond, le script saute complètement l'interface et fait immédiatement un
cddans le répertoire.
Astuce de pro
C'est parfait pour les projets que vous visitez souvent. Si votre motif est suffisamment unique, ça devient un raccourci ultra-rapide !
Conclusion
La différence entre un environnement de développeur « junior » et « senior » tient souvent à la friction de l'outillage. En déplaçant vos fonctions dans des fichiers autonomes, vous réduisez la friction liée à la maintenance de votre environnement.
Avec repo installé dans votre nouvelle organisation modulaire, vous pouvez désormais vous téléporter dans votre workspace en quelques secondes. La prochaine fois que vous écrivez un snippet utile, ne le collez pas dans votre .zshrc. Donnez-lui son propre logement dans ~/.zsh/fns/ — voir Fonctions ZSH - Personnaliser votre shell pour gérer Docker et Afficher les 3 dernières branches modifiées quand vous entrez dans un repo git pour d'autres ensembles de fonctions et de hooks organisés de la même manière.
Cet article fait partie de la série Personnaliser votre shell avec ZSH :
- Personnalisez votre prompt Linux avec Powerlevel10k
- Comment installer Oh-My-ZSH
- Autosuggestions dans la console avec ZSH
- La coloration syntaxique dans la console avec ZSH
- Linux - Travailler avec l'historique de vos dernières commandes
- Fonctions ZSH - Personnaliser votre shell pour gérer Docker
- Au-delà du monolithe - Organiser son workflow ZSH comme un pro
Chargement des commentaires…






