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.
| Commande | Description |
|---|
brew install zoxide | Installer sur macOS avec Homebrew |
cargo install zoxide --locked | Installer depuis crates.io |
apt install zoxide | Installer sur Debian/Ubuntu |
pacman -S zoxide | Installer sur Arch Linux |
dnf install zoxide | Installer sur Fedora |
scoop install zoxide | Installer sur Windows avec Scoop |
winget install ajeetdsouza.zoxide | Installer sur Windows avec winget |
nix-env -i zoxide | Installer sur NixOS |
conda install -c conda-forge zoxide | Installer avec Conda |
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh | Installer via script shell |
| Commande | Description |
|---|
eval "$(zoxide init bash)" | Initialiser pour Bash (ajouter au .bashrc) |
eval "$(zoxide init zsh)" | Initialiser pour Zsh (ajouter au .zshrc) |
zoxide init fish | source | Initialiser pour Fish (ajouter au config.fish) |
Invoke-Expression (& { (zoxide init powershell) }) | Initialiser pour PowerShell |
zoxide init nushell | save -f ~/.zoxide.nu | Initialiser 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
| Commande | Description |
|---|
z foo | Aller au répertoire le mieux classé correspondant à “foo” |
z foo bar | Aller au répertoire correspondant à “foo” et “bar” |
z ~/projects | Aller au chemin exact (comme cd) |
z .. | Aller au répertoire parent |
z - | Aller au répertoire précédent |
z | Aller au répertoire personnel (sans arguments) |
zi | Sélection interactive avec fzf |
zi foo | Sé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
| Commande | Description |
|---|
z proj | Correspondre tout répertoire contenant “proj” |
z proj rust | Correspondre un répertoire contenant “proj” et “rust” |
z /home/user/docs | Utiliser 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éfixe | z pr correspond à projects |
| Les mots-clés multiples sont combinés en ET | Tous doivent apparaître dans le chemin |
| La correspondance ignore la casse | z PROJ correspond à projects |
| Concept | Description |
|---|
| Fréquence-récence = Fréquence + Récence | Score 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és | L’utilisation régulière augmente le score au fil du temps |
| Les scores diminuent avec le temps | Les répertoires inutilisés perdent progressivement leur classement |
| La base de données élimine automatiquement les scores bas | Les anciennes entrées inutilisées sont supprimées automatiquement |
Nombre maximal d’entrées contrôlé par _ZO_MAXAGE | Par défaut : 10 000 entrées |
| Commande | Description |
|---|
zi | Ouvrir fzf avec tous les répertoires suivis |
zi query | Ouvrir fzf pré-filtré par la requête |
↑ / ↓ dans fzf | Naviguer dans les résultats |
Enter dans fzf | Sélectionner et aller au répertoire |
Escape dans fzf | Annuler la sélection |
| Taper dans fzf pour filtrer | Affiner davantage les résultats |
Nécessite l’installation de fzf | Installer fzf pour le mode interactif |
Tab dans fzf | Basculer 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
| Commande | Description |
|---|
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 cd | cd utilise zoxide (cd, cdi) |
--cmd j crée j et ji | Utiliser des noms de commandes personnalisés |
Par défaut crée z et zi | Commandes zoxide standard |
| Commande | Description |
|---|
--hook pwd | Mettre à jour la base lors du changement de répertoire (par défaut) |
--hook prompt | Mettre à jour la base à chaque invite |
--hook none | Dé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"
| Commande | Description |
|---|
zoxide query foo | Afficher la meilleure correspondance sans naviguer |
zoxide query foo --list | Lister toutes les correspondances avec scores |
zoxide query foo --score | Afficher les correspondances avec scores de fréquence-récence |
zoxide query --all | Lister toute la base de données |
zoxide query --all --score | Lister la base de données avec les scores |
zoxide query --exclude /path | Exclure un chemin spécifique des résultats |
zoxide query --list | head -20 | Top 20 des répertoires |
| Commande | Description |
|---|
zoxide add /path/to/dir | Ajouter manuellement un répertoire à la base de données |
zoxide remove /path/to/dir | Supprimer un répertoire de la base de données |
zoxide edit | Ouvrir la base de données dans $EDITOR (interactif) |
Base de données stockée à $_ZO_DATA_DIR/db.zo | Emplacement 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
| Commande | Description |
|---|
zoxide import --from z path/to/.z | Importer depuis la base de données z.sh |
zoxide import --from autojump path/to/autojump.txt | Importer depuis la base de données autojump |
zoxide import --merge --from z path/to/.z | Import avec fusion (conserver les entrées existantes) |
zoxide import --from z --merge ~/.z | Import 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
| Commande | Description |
|---|
export _ZO_DATA_DIR="$HOME/.local/share/zoxide" | Définir le répertoire de la base de données |
export _ZO_ECHO=1 | Afficher 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=10000 | Définir le nombre maximum d’entrées |
export _ZO_RESOLVE_SYMLINKS=1 | Ré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)"
| Commande | Description |
|---|
z <Tab> | Autocompléter depuis les répertoires suivis |
z foo<Tab> | Compléter les répertoires correspondants |
Complétion Bash via zoxide init | Automatique avec l’initialisation du shell |
Complétion Zsh via zoxide init | Automatique avec l’initialisation du shell |
Complétion Fish via zoxide init | Automatique avec l’initialisation du shell |
-
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.
-
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.
-
Utiliser la barre oblique finale pour les sous-répertoires — z 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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Sauvegarder votre base de données — Exportez avec zoxide query --all --score avant les réinstallations d’OS ou les migrations de machine.
-
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.