Aller au contenu

Zoxide

Commande cd plus intelligente qui apprend vos habitudes grâce à un algorithme de fréquence-récence pour une navigation rapide entre les répertoires.

CommandeDescription
brew install zoxideInstaller sur macOS avec Homebrew
cargo install zoxide --lockedInstaller depuis crates.io
apt install zoxideInstaller sur Debian/Ubuntu
pacman -S zoxideInstaller sur Arch Linux
dnf install zoxideInstaller sur Fedora
scoop install zoxideInstaller sur Windows avec Scoop
winget install ajeetdsouza.zoxideInstaller sur Windows avec winget
nix-env -i zoxideInstaller sur NixOS
conda install -c conda-forge zoxideInstaller avec Conda
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | shInstaller via script shell
CommandeDescription
eval "$(zoxide init bash)"Initialiser pour Bash (ajouter au .bashrc)
eval "$(zoxide init zsh)"Initialiser pour Zsh (ajouter au .zshrc)
zoxide init fish | sourceInitialiser pour Fish (ajouter au config.fish)
Invoke-Expression (& { (zoxide init powershell) })Initialiser pour PowerShell
zoxide init nushell | save -f ~/.zoxide.nuInitialiser pour Nushell
eval "$(zoxide init elvish)"Initialiser pour Elvish
eval (zoxide init xonsh)Initialiser pour Xonsh
# Bash — ajouter à ~/.bashrc
eval "$(zoxide init bash)"

# Zsh — ajouter à ~/.zshrc
eval "$(zoxide init zsh)"

# Fish — ajouter à ~/.config/fish/config.fish
zoxide init fish | source

# PowerShell — ajouter au $PROFILE
Invoke-Expression (& { (zoxide init powershell | Out-String) })

# Nushell — ajouter à env.nu
zoxide init nushell | save -f ~/.zoxide.nu
source ~/.zoxide.nu
CommandeDescription
z fooAller au répertoire le mieux classé correspondant à “foo”
z foo barAller au répertoire correspondant à “foo” et “bar”
z ~/projectsAller au chemin exact (comme cd)
z ..Aller au répertoire parent
z -Aller au répertoire précédent
zAller au répertoire personnel (sans arguments)
ziSélection interactive avec fzf
zi fooSélection interactive pré-filtrée par “foo”
z foo/Aller au sous-répertoire (barre oblique finale)
# Après avoir visité des répertoires, zoxide les apprend
cd ~/projects/myapp          # Enseigner ce chemin à zoxide
cd ~/documents/reports       # Enseigner ce chemin à zoxide
cd /var/log/nginx            # Enseigner ce chemin à zoxide

# Plus tard, naviguer avec des correspondances partielles
z myapp                      # Aller à ~/projects/myapp
z reports                    # Aller à ~/documents/reports
z nginx                      # Aller à /var/log/nginx

# Plusieurs mots-clés affinent la correspondance
z proj myapp                 # Correspond à ~/projects/myapp spécifiquement
z doc rep                    # Correspond à ~/documents/reports
CommandeDescription
z projCorrespondre tout répertoire contenant “proj”
z proj rustCorrespondre un répertoire contenant “proj” et “rust”
z /home/user/docsUtiliser un chemin absolu directement
z docs/Correspondre et préférer un sous-répertoire nommé “docs”
Les mots-clés correspondent aux composants du chemin”proj” correspond à /home/user/projects
Le dernier mot-clé peut correspondre à un préfixez pr correspond à projects
Les mots-clés multiples sont combinés en ETTous doivent apparaître dans le chemin
La correspondance ignore la cassez PROJ correspond à projects
ConceptDescription
Fréquence-récence = Fréquence + RécenceScore basé sur la fréquence et la récence des visites
Les visites récentes ont un score plus élevéLes répertoires visités aujourd’hui comptent plus que la semaine dernière
Les répertoires fréquemment visités sont mieux classésL’utilisation régulière augmente le score au fil du temps
Les scores diminuent avec le tempsLes répertoires inutilisés perdent progressivement leur classement
La base de données élimine automatiquement les scores basLes anciennes entrées inutilisées sont supprimées automatiquement
Nombre maximal d’entrées contrôlé par _ZO_MAXAGEPar défaut : 10 000 entrées
CommandeDescription
ziOuvrir fzf avec tous les répertoires suivis
zi queryOuvrir fzf pré-filtré par la requête
↑ / ↓ dans fzfNaviguer dans les résultats
Enter dans fzfSélectionner et aller au répertoire
Escape dans fzfAnnuler la sélection
Taper dans fzf pour filtrerAffiner davantage les résultats
Nécessite l’installation de fzfInstaller fzf pour le mode interactif
Tab dans fzfBasculer la sélection (mode multi-sélection)
# Ouvrir le sélecteur flou interactif avec tous les répertoires suivis
zi

# Pré-filtrer les répertoires contenant "project"
zi project

# Le format de sortie dans fzf affiche les scores :
#   3.50   /home/user/projects/myapp
#   2.10   /home/user/projects/api
#   1.20   /var/www/project-site
CommandeDescription
eval "$(zoxide init bash --cmd cd)"Remplacer cd par zoxide dans Bash
eval "$(zoxide init zsh --cmd cd)"Remplacer cd par zoxide dans Zsh
--cmd cd remplace la commande cdcd utilise zoxide (cd, cdi)
--cmd j crée j et jiUtiliser des noms de commandes personnalisés
Par défaut crée z et ziCommandes zoxide standard
CommandeDescription
--hook pwdMettre à jour la base lors du changement de répertoire (par défaut)
--hook promptMettre à jour la base à chaque invite
--hook noneDésactiver le suivi automatique
# Remplacer cd dans Bash par zoxide
eval "$(zoxide init bash --cmd cd)"
# Maintenant 'cd' utilise zoxide, 'cdi' ouvre l'interactif

# Utiliser un nom de commande personnalisé
eval "$(zoxide init zsh --cmd j)"
# Maintenant 'j foo' navigue, 'ji' ouvre l'interactif

# Combiner avec fzf pour une expérience améliorée
export _ZO_FZF_OPTS="--height 40% --reverse --border"
CommandeDescription
zoxide query fooAfficher la meilleure correspondance sans naviguer
zoxide query foo --listLister toutes les correspondances avec scores
zoxide query foo --scoreAfficher les correspondances avec scores de fréquence-récence
zoxide query --allLister toute la base de données
zoxide query --all --scoreLister la base de données avec les scores
zoxide query --exclude /pathExclure un chemin spécifique des résultats
zoxide query --list | head -20Top 20 des répertoires
CommandeDescription
zoxide add /path/to/dirAjouter manuellement un répertoire à la base de données
zoxide remove /path/to/dirSupprimer un répertoire de la base de données
zoxide editOuvrir la base de données dans $EDITOR (interactif)
Base de données stockée à $_ZO_DATA_DIR/db.zoEmplacement par défaut de la base de données
# Vérifier ce que zoxide correspondrait
zoxide query project --list --score
# Sortie :
#    12.00  /home/user/projects/webapp
#     8.50  /home/user/projects/api
#     3.20  /home/user/old-project

# Peupler manuellement la base pour les nouvelles machines
zoxide add ~/projects/webapp
zoxide add ~/projects/api
zoxide add ~/.config/nvim

# Supprimer les entrées obsolètes (répertoires supprimés)
zoxide query --all | while read -r dir; do
  [ -d "$dir" ] || zoxide remove "$dir"
done

# Exporter la base de données pour sauvegarde
zoxide query --all --score > zoxide-backup.txt
CommandeDescription
zoxide import --from z path/to/.zImporter depuis la base de données z.sh
zoxide import --from autojump path/to/autojump.txtImporter depuis la base de données autojump
zoxide import --merge --from z path/to/.zImport avec fusion (conserver les entrées existantes)
zoxide import --from z --merge ~/.zImport courant depuis z.sh
# Migrer depuis z.sh (le plus courant)
zoxide import --from z ~/.z

# Migrer depuis autojump
zoxide import --from autojump ~/.local/share/autojump/autojump.txt

# Fusionner avec la base existante (ne pas écraser)
zoxide import --merge --from z ~/.z

# Après l'import, vérifier
zoxide query --all --score | head -20
CommandeDescription
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"Définir le répertoire de la base de données
export _ZO_ECHO=1Afficher le répertoire correspondant avant de naviguer
export _ZO_EXCLUDE_DIRS="/tmp/*:/private/*"Exclure des répertoires du suivi
export _ZO_FZF_OPTS="--height 40%"Options fzf personnalisées pour zi
export _ZO_MAXAGE=10000Définir le nombre maximum d’entrées
export _ZO_RESOLVE_SYMLINKS=1Résoudre les liens symboliques avant le stockage
# ~/.bashrc ou ~/.zshrc — configuration complète de zoxide

# Définir un répertoire de données personnalisé
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"

# Afficher le répertoire correspondant avant de naviguer
export _ZO_ECHO=1

# Exclure les répertoires temporaires et système
export _ZO_EXCLUDE_DIRS="$HOME:$HOME/Downloads:/tmp/*:/private/*"

# Personnaliser l'apparence fzf pour le mode interactif
export _ZO_FZF_OPTS="
  --height 40%
  --layout reverse
  --border rounded
  --preview 'ls -la {2..}'
  --preview-window right:40%
"

# Nombre maximum d'entrées avant l'élagage (par défaut : 10000)
export _ZO_MAXAGE=10000

# Résoudre les liens symboliques vers les chemins canoniques
export _ZO_RESOLVE_SYMLINKS=1

# Initialiser zoxide (doit être APRÈS les exports)
eval "$(zoxide init zsh)"
CommandeDescription
z <Tab>Autocompléter depuis les répertoires suivis
z foo<Tab>Compléter les répertoires correspondants
Complétion Bash via zoxide initAutomatique avec l’initialisation du shell
Complétion Zsh via zoxide initAutomatique avec l’initialisation du shell
Complétion Fish via zoxide initAutomatique avec l’initialisation du shell
  1. Laisser zoxide apprendre naturellement — Utilisez votre shell normalement et zoxide construira sa base de données à partir de vos habitudes. N’essayez pas de peupler manuellement chaque répertoire.

  2. Utiliser deux mots-clés pour la précision — Quand plusieurs répertoires correspondent, ajoutez un second mot-clé : z proj api est plus précis que z api seul.

  3. Utiliser la barre oblique finale pour les sous-répertoiresz foo/ préfère les sous-répertoires du répertoire courant nommés “foo”, tandis que z foo cherche dans toute la base de données.

  4. Remplacer cd pour un apprentissage maximal — Utilisez --cmd cd dans votre initialisation shell pour que chaque changement de répertoire alimente zoxide, pas seulement quand vous pensez à utiliser z.

  5. Configurer les exclusions tôt — Définissez _ZO_EXCLUDE_DIRS pour ignorer les répertoires temporaires, les dossiers de build et les chemins node_modules qui polluent les résultats.

  6. Utiliser zi pour les sauts ambigus — Quand vous n’êtes pas sûr de quel répertoire sera trouvé, utilisez zi (interactif) pour prévisualiser et sélectionner parmi les candidats.

  7. Migrer les données existantes — Si vous passez de z.sh, autojump ou fasd, importez votre base de données avec zoxide import pour commencer avec un cache déjà rempli.

  8. Nettoyer les entrées obsolètes — Supprimez régulièrement les entrées pour les répertoires supprimés en utilisant zoxide edit ou un script de nettoyage pour garder des résultats pertinents.

  9. Sauvegarder votre base de données — Exportez avec zoxide query --all --score avant les réinstallations d’OS ou les migrations de machine.

  10. Personnaliser l’apparence fzf — Définissez _ZO_FZF_OPTS avec --preview 'ls {2..}' pour afficher le contenu des répertoires dans le sélecteur interactif.