|

Zoxide : une commande cd intelligente qui mémorise vos répertoires les plus utilisés

https://github.com/ajeetdsouza/zoxide

📌 ZOXIDE est une commande cd améliorée qui apprend de vos habitudes de navigation pour vous faire gagner du temps au quotidien. Cet outil écrit en Rust remplace la commande traditionnelle de changement de répertoire en ajoutant une couche d’intelligence : au lieu de devoir mémoriser des chemins complexes ou de les retaper inlassablement, zoxide garde en mémoire les dossiers que vous fréquentez et vous permet d’y accéder en quelques caractères. Le concept est simple mais puissant : plus vous utilisez un répertoire, plus il devient facile d’y retourner, quelle que soit sa profondeur dans l’arborescence. Conçu pour fonctionner avec tous les shells majeurs (Bash, Zsh, Fish, PowerShell, Elvish, Nushell, Xonsh et autres), il s’intègre transparentment à votre workflow existant sans requérir de changement radical dans vos habitudes. L’installation se fait en une seule commande via script autonome ou gestionnaire de paquets, et une fois configuré, zoxide commence immédiatement à apprendre de vos déplacements pour les rendre ensuite quasi instantanés. L’outil stocke localement ses données dans un fichier simple, respectant votre vie privée sans aucun envoi vers des services externes, et offre même la possibilité d’importer votre historique depuis des outils similaires comme autojump, fasd ou z pour une transition en douceur.

Points clés

  • 🚀 Accès rapide : tapez z projet pour sauter directement vers le répertoire correspondant, sans chemin complet
  • 🔍 Recherche floue : plusieurs mots-clés affinent la recherche (z docs code trouve le répertoire contenant les deux)
  • 🎯 Mode interactif : zi projet ouvre une sélection visuelle avec fzf pour choisir parmi les correspondances
  • 🐚 Multi-shells : supporte Bash, Zsh, Fish, PowerShell, Elvish, Nushell, Xonsh, et bien d’autres
  • 📦 Installation simple : une seule commande curl ou via votre gestionnaire (brew, apt, pacman, cargo…)
  • 🔒 100% local : données stockées uniquement sur votre machine, aucun tracking ni envoi externe
  • Performance Rust : binaire ultra-léger et rapide, aucune dépendance requise (fzf optionnel)
  • 🔄 Migration facile : importez vos données depuis autojump, fasd ou z sans perte d’historique

Le fonctionnement repose sur un algorithme de pondération qui attribue un score à chaque répertoire visité en fonction de la fréquence et de la récence de vos visites. Ainsi, un dossier sur lequel vous travaillez quotidiennement se verra attribuer un score élevé et sera privilégié lors des recherches, tandis qu’un répertoire consulté une seule fois il y a plusieurs mois aura un score plus faible. Ce scoring dynamique signifie que zoxide s’adapte à vos projets actuels : si vous changez de contexte et commencez à travailler sur un nouveau projet, il gagnera progressivement en priorité dans les suggestions. La base de données, stockée par défaut dans ~/.local/share/zoxide sur Linux/BSD, ~/Library/Application Support/zoxide sur macOS ou %LOCALAPPDATA%\zoxide sur Windows, conserve jusqu’à 10 000 entrées par défaut, largement suffisant pour couvrir les besoins d’un développeur actif. Vous pouvez exclure certains répertoires sensibles ou temporaires via la variable _ZO_EXCLUDE_DIRS et modifier le préfixe de commande si vous préférez utiliser autre chose que z.

Points clés

  • 🧠 Apprentissage automatique : l’algorithme adapte les scores en fonction de votre utilisation réelle
  • 🗂️ Base locale : jusqu’à 10 000 entrées stockées dans un fichier texte lisible
  • 🚫 Exclusions : ignorez les dossiers temporaires ou sensibles via _ZO_EXCLUDE_DIRS
  • ⚙️ Personnalisation : changez le préfixe, le hook et le comportement via variables d’environnement
  • 📊 Import historique : récupérez vos données depuis autojump, fasd, z ou z.lua

L’intégration dans votre shell se limite à ajouter une ligne d’initialisation dans votre fichier de configuration (.bashrc, .zshrc, config.fish, etc.) : cette ligne charge les fonctions de zoxide et enregistre chaque déplacement pour mettre à jour la base de données. Contrairement à d’autres solutions qui nécessitent des alias complexes ou des modifications profondes de votre configuration, zoxide fonctionne avec le hook natif de votre shell pour capturer automatiquement les changements de répertoire. L’outil propose également des fonctionnalités avancées comme la navigation interactive avec fzf : la commande zi (ou zoxide -i) affiche une liste filtrable des répertoires correspondants, permettant de choisir visuellement la destination lorsque plusieurs options sont possibles. Cette intégration avec fzf, bien qu’optionnelle, transforme l’expérience en ajoutant la recherche floue, la navigation au clavier et un aperçu des chemins complets. Les utilisateurs de Vim ou Neovim bénéficient d’une intégration native pour changer de répertoire directement depuis l’éditeur, tandis que les gestionnaires de fichiers comme Ranger, lf, NNN ou Yazi peuvent également tirer parti de la base de données de zoxide.

Points clés

  • 🔌 Hooks natifs : s’intègre via le mécanisme propre de chaque shell, pas d’alias complexes
  • 🔎 Fzf intégré : mode interactif avec recherche floue et prévisualisation des chemins
  • 📝 Éditeurs compatibles : extensions pour Vim/Neovim et Emacs pour changer de répertoire depuis l’éditeur
  • 🖥️ Gestionnaires de fichiers : fonctionne avec Ranger, lf, NNN, Yazi et autres TUI
  • 🪟 Multi-plateforme : Linux, macOS, Windows, BSD et Android supportés

L’installation se décline en plusieurs méthodes selon votre préférence : le script d’installation universel télécharge le binaire précompilé correspondant à votre système et l’installe dans /usr/local/bin par défaut, tandis que les gestionnaires de paquets comme Homebrew (brew install zoxide), APT (apt install zoxide), Pacman (pacman -S zoxide) ou Cargo (cargo install zoxide) offrent une intégration plus native à votre distribution. Quel que soit le moyen choisi, l’étape finale consiste à ajouter la ligne d’initialisation appropriée à votre configuration shell : eval "$(zoxide init bash)" pour Bash, eval "$(zoxide init zsh)" pour Zsh, ou zoxide init fish | source pour Fish. Une fois cette modification appliquée (après avoir relancé votre terminal ou sourcé votre fichier de configuration), zoxide est immédiatement opérationnel et commence à apprendre de vos déplacements. La première utilisation est aussi simple que de remplacer vos cd habituels par z : tapez z Documents pour accéder à votre dossier personnel, z workspace pour rejoindre votre espace de travail, ou même z zox pour atteindre le répertoire de zoxide lui-même sans connaître son emplacement exact.

Points clés

  • 📜 Script universel : curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
  • 🍺 Homebrew : brew install zoxide pour macOS et Linux
  • 🐧 Paquets natifs : disponible dans APT, Pacman, DNF, APK et autres dépôts
  • 🦀 Cargo install : cargo install zoxide pour les utilisateurs Rust
  • ⚙️ Setup rapide : une seule ligne d’init dans votre config shell (eval "$(zoxide init zsh)")

Zoxide se distingue de ses prédécesseurs comme z ou autojump par sa modernité technique (écrit en Rust pour garantir performances et sécurité mémoire) et sa flexibilité supérieure. La base de données, stockée dans un format texte simple et lisible, peut être inspectée ou modifiée manuellement si nécessaire, et le code source open-source permet à chacun de vérifier son fonctionnement. L’outil gère intelligemment les espaces dans les noms de répertoires, les caractères spéciaux et les chemins contenant des symboles unicode, évitant les bugs classiques qui affectaient les premières générations de scripts de navigation intelligente. La commande zoxide query permet d’interroger la base de données pour voir quels répertoires sont enregistrés et leurs scores, tandis que zoxide add et zoxide remove offrent un contrôle manuel sur les entrées si vous souhaitez ajuster le comportement automatique. Pour les utilisateurs avancés, la variable _ZO_FZF_OPTS permet de passer des options personnalisées à fzf lors du mode interactif, et _ZO_RESOLVE_SYMLINKS contrôle la manière dont les liens symboliques sont traités lors de l’enregistrement des chemins.

Concrètement, zoxide transforme une tâche répétitive en une action quasi réflexe : au lieu de taper cd ~/Documents/Projects/2024/active/web/frontend/src, quelques caractères suffisent pour atteindre la même destination. Le gain de temps est particulièrement visible sur les projets profonds ou dont le chemin n’est pas trivial à mémoriser, et l’investissement initial d’apprentissage se rentabilise dès les premières utilisations. Que vous soyez développeur, administrateur système ou simplement un utilisateur fréquent du terminal, la courbe d’apprentissage est quasiment inexistante et les bénéfices immédiats. Au final, c’est un outil qui se fait oublier : après quelques jours d’utilisation, z devient aussi naturel que cd l’était auparavant, et vous ne réalisez pleinement son utilité que lorsque vous vous retrouvez sur un système qui ne l’a pas encore installé.


En savoir plus sur Clement MONDARY

Subscribe to get the latest posts sent to your email.

Publications similaires

Laisser un commentaire