Zoxide : Un outil de navigation de répertoire intelligent pour le terminal

Zoxide est un utilitaire en ligne de commande multiplateforme écrit en Rust, conçu pour transformer la manière dont les utilisateurs naviguent dans les répertoires du terminal. Il se positionne comme une alternative intelligente à la commande cd traditionnelle, s'inspirant des outils classiques z et autojump. En apprenant continuellement les habitudes de navigation de l'utilisateur, Zoxide maintient une base de données pondérée basée sur la "fréquence" et la "récence" (Frecency). Cela permet aux utilisateurs de changer de répertoire sans saisir de chemins complets et fastidieux ; quelques mots-clés du nom du répertoire suffisent pour que Zoxide calcule instantanément le chemin le plus pertinent et effectue le changement.

Fonctionnalités clés

  • Algortihme de pondération intelligent : Utilise l'algorithme Frecency, qui combine la fréquence d'accès et le temps du dernier accès pour prioriser les répertoires les plus fréquemment utilisés.
  • Multiplateforme et multi-shell : Prend en charge nativement Linux, macOS et Windows, et s'intègre parfaitement avec les environnements Shell courants tels que Bash, Zsh, Fish, PowerShell, Elvish et Nushell.
  • Sélection interactive : S'intègre avec le chercheur flou fzf. Lorsque plusieurs correspondances sont trouvées, la commande zi permet une sélection visuelle dans une interface interactive.
  • Substitution transparente de cd : Peut être configuré pour remplacer complètement la commande cd système, permettant de conserver les habitudes d'utilisation tout en bénéficiant de la navigation intelligente.
  • Importation de données et compatibilité : Offre une fonction d'importation en un clic pour migrer les données historiques d'anciens outils comme autojump, z, z.lua et zsh-z, assurant une transition en douceur.
  • Intégration avec l'écosystème tiers : S'intègre en profondeur avec des gestionnaires de fichiers et des éditeurs tels que Neovim (via telescope-zoxide), Ranger, Yazi et LF, pour une mémoire de répertoire unifiée entre les outils.

Installation et configuration

Méthodes d'installation

Via les gestionnaires de paquets (recommandé) :

  • macOS (Homebrew) : brew install zoxide
  • Ubuntu/Debien : sudo apt install zoxide
  • Arch Linux : sudo pacman -S zoxide
  • Windows (Winget) : winget install ajeetdsouza.zoxide
  • Cargo (général) : cargo install zoxide --locked

Via le script d'installation :

curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

Configuration du Shell

Après avoir installé l'exécutable, vous devez initialiser Zoxide dans votre fichier de configuraton Shell. Voici un exemple pour Zsh (la syntaxe est similaire pour d'autres shells) :

  1. Modifiez votre fichier ~/.zshrc et ajoutez à la fin : ``` eval "$(zoxide init zsh)"
  2. Rechargez la configuration : source ~/.zshrc

Options de configuration avancées

  • Préfixe de commande personnalisé : Pour utiliser un alias différent de z, spécifiez-le, par exemple : eval "$(zoxide init zsh --cmd j)" pour utiliser j comme commande.
  • Remplacement de cd : Utilisez l'argument --cmd cd pour que la commande cd elle-même devienne intelligente.
  • Variables d'environnement : Définissez _ZO_EXCLUDE_DIRS pour exclure certains répertoires (comme /tmp ou node_modules) de l'enregistrement. Définissez _ZO_DATA_DIR pour spécifier un emplacement personnalisé pour la base de données.

Utilisation

L'utilisation de Zoxide est très intuitive, la commande principale étant z.

  • Navigation de base : z foo — Navigue vers le répertoire dont le nom contient "foo" et qui a le poids le plus élevé.
  • Correspondance de plusieurs mots-clés : z foo bar — Navigue vers un répertoire contenant à la fois "foo" et "bar" (par exemple, project-foo-bar).
  • Chemins relatifs et absolus : z foo/ pour entrer dans le sous-répertoire foo du répertoire actuel ; z /etc pour accéder au chemin absolu.
  • Sélection interactive : zi foo — Ouvre le panneau de sélection fzf, listant toutes les correspondances pour que vous puissiez choisir.
  • Gestion des répertoires :
    • zoxide add /chemin — Ajoute manuellement un répertoire à la base de données.
    • zoxide remove /chemin — Supprime un répertoire de la base de données.
    • zoxide query foo — Interroge uniquement les chemins correspondants sans naviguer.

Exemples d'utilisation

Exemple 1 : Changement entre plusieurs projets

Scénario : Un développeur maintient trois projets : company-website, personal-blog et internal-api-service, situés respectivement dans ~/Dev/company/, ~/Projects/blog/ et /workspace/api/.

  • Méthode traditionnelle : Nécessite de taper cd ~/Dev/company/company-website ou d'utiliser plusieurs fois cd ../.
  • Méthode Zoxide : Il suffit de taper z web. Comme le projet du site web est fréquemment accédé, Zoxide correspondra automatiquement à company-website et vous y amènera instantanément. Pour passer au blog, tapez simplement z blog.

Exemple 2 : Accès à des répertoires imbriqués en profondeur

Scénario : Besoin d'accéder au répertoire ~/Documents/University/CS101/Assignments/Project_Final/src/utils/.

  • Méthode traditionnelle : Nécessite de naviguer niveau par niveau avec cd ou de copier-coller le chemin long.
  • Méthode Zoxide : Tapez z utils. Même si le répertoire utils est très profond, tant qu'il s'agit du seul répertoire contenant "utils" que vous avez accédé récemment, Zoxide peut le trouver directement en traversant tous les répertoires parents.

Exemple 3 : Correspondance floue et résolution de conflits

Scénario : Il existe deux répertoires, old-project et new-project, et vous souhaitez accéder à new-project.

  • Opération : Tapez z new. Si les poids sont similaires, le système pourrait ne pas être en mesure de déterminer le bon répertoire. Utilisez alors zi new. Dans l'interface fzf, utilisez les touches fléchées pour sélectionner new-project et appuyez sur Entrée pour y accéder.

Adresse GitHub

Dépôt du projet : https://github.com/ajeetdsouza/zoxide

Étiquettes: zoxide terminal Navigation Shell Rust

Publié le 24 juin à 03h18