Introduction
Naviguer dans l'arborescence des fichiers en ligne de commande peut rapidement devenir fastidieux, surtout lorsque vous travaillez avec des projets complexes comportant de nombreux répertoires imbriqués. C'est là qu'intervient zoxide, un outil révolutionnaire qui transforme votre expérience de navigation en shell.
Zoxide est une alternative moderne et intelligente à la commande cd
traditionnelle. Inspiré par des outils comme z
et autojump
, il mémorise les répertoires que vous visitez le plus fréquemment et vous permet de "sauter" vers eux en quelques frappes seulement.
Qu'est-ce que zoxide ?
Zoxide est un utilitaire de navigation rapide qui :
- Apprend de vos habitudes : Il enregistre automatiquement les répertoires que vous visitez
- Propose une navigation intelligente : Plus vous visitez un répertoire, plus il devient facile d'y accéder
- Supporte tous les shells majeurs : Bash, Zsh, Fish, PowerShell, Nushell, et plus encore
- Offre une sélection interactive : Avec
zi
, vous pouvez choisir parmi plusieurs options viafzf
- Reste compatible : Fonctionne comme un
cd
classique quand nécessaire
Installation sur Debian/Ubuntu et dérivés
Installation via les dépôts officiels
La méthode la plus simple pour installer zoxide sur Debian 11+ et Ubuntu est d'utiliser les dépôts officiels :
sudo apt update
sudo apt install zoxide
Méthodes alternatives d'installation
Si vous préférez une version plus récente ou si zoxide n'est pas disponible dans vos dépôts, vous pouvez utiliser :
Via le script d'installation officiel
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
⚠️ Note de sécurité : Il est recommandé de lire le contenu du script avant de l'exécuter. Vous pouvez d'abord le télécharger avec
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh
pour l'examiner.
Via Cargo (si Rust est installé)
cargo install zoxide --locked
Via Homebrew sur Linux
brew install zoxide
Prérequis recommandé : fzf
Pour profiter pleinement de zoxide, notamment de la commande interactive zi
, il est recommandé d'installer fzf
:
sudo apt install fzf
Configuration avec zoxide init
Une fois zoxide installé, vous devez l'initialiser dans votre shell. Cette étape est cruciale car elle intègre zoxide à votre environnement shell.
Note : La commande
zoxide init
génère la configuration à ajouter à votre profil shell.
Configuration pour Bash
Ajoutez cette ligne à la fin de votre fichier ~/.bashrc
:
eval "$(zoxide init bash)"
Configuration pour Zsh
Ajoutez cette ligne à la fin de votre fichier ~/.zshrc
:
eval "$(zoxide init zsh)"
Configuration pour Fish
Ajoutez cette ligne à la fin de votre fichier ~/.config/fish/config.fish
:
zoxide init fish | source
Rechargement de la configuration
Après avoir modifié votre fichier de configuration, rechargez-le suivant le shell utilisé :
source ~/.bashrc
source ~/.zshrc
source ~/.config/fish/config.fish
Utilisation de base
Une fois configuré, zoxide vous donne accès à plusieurs commandes puissantes :
La commande z
z foo
z foo bar
z foo/
z ~/Documents
z ..
z -
La commande zi
(navigation interactive)
zi foo
Cette commande ouvre une interface interactive où vous pouvez choisir parmi plusieurs répertoires correspondants.
Autocomplétion
Sur les shells compatibles (Bash 4.4+, Fish, Zsh), vous pouvez utiliser l'autocomplétion :
z foo<SPACE><TAB>
Bonus : Alias cd='z'
Pour une intégration encore plus transparente, vous pouvez créer un alias qui remplace complètement cd
par z
:
Méthode recommandée : Configuration automatique via zoxide init
La meilleure approche est d'utiliser l'option --cmd cd
lors de l'initialisation :
eval "$(zoxide init bash --cmd cd)"
eval "$(zoxide init zsh --cmd cd)"
Avec cette configuration, la commande cd
sera automatiquement remplacée par z
, tout en conservant la compatibilité avec l'utilisation classique de cd
.
Alternative : Alias manuel
Si vous préférez ne pas modifier votre configuration zoxide init
existante, vous pouvez simplement ajouter un alias :
alias cd='z'
Cette méthode produit le même résultat que --cmd cd
, mais la méthode automatique avec --cmd cd
est plus propre et évite les conflits potentiels.
Options de configuration avancées
Personnalisation du préfixe des commandes
eval "$(zoxide init bash --cmd j)"
eval "$(zoxide init bash --cmd cd)"
Contrôle de la fréquence d'enregistrement
eval "$(zoxide init bash --hook pwd)"
eval "$(zoxide init bash --hook prompt)"
eval "$(zoxide init bash --hook none)"
Exemples pratiques d'utilisation
Scénario 1 : Développement web
cd ~/projets/mon-site-web/src/components/header
z header
Scénario 2 : Administration système
z logs
z config
Scénario 3 : Projets multiples
z projet1
z projet2 backend
z projet3 frontend
Commandes utiles
Gestion de la base de données zoxide
zoxide query --list
zoxide add /chemin/vers/repertoire
zoxide remove /chemin/vers/repertoire
# Nettoyer les répertoires inexistants
zoxide query --list | while read -r line; do
path=$(echo "$line" | awk '{print $2}')
[ ! -d "$path" ] && zoxide remove "$path"
done
Avantages par rapport aux alternatives
Comparaison avec autojump
Source : https://github.com/wting/autojump
- Performance : zoxide est écrit en Rust, plus rapide que autojump (Python)
- Maintenance : Projet activement maintenu
- Compatibilité : Support natif de plus de shells
Comparaison avec z.sh
Source : https://github.com/rupa/z
- Algorithme : Meilleur algorithme de classement
- Fonctionnalités : Mode interactif avec
zi
- Robustesse : Gestion d'erreurs améliorée
Intégrations et outils complémentaires
Avec votre éditeur
Vous pouvez créer des fonctions personnalisées pour ouvrir directement des projets :
# Fonction pour ouvrir un projet avec Neovim
function nvim-project() {
local dir=$(zoxide query "$1")
if [ -n "$dir" ]; then
cd "$dir" && nvim .
else
echo "Projet non trouvé : $1"
fi
}
# Fonction pour ouvrir un projet avec VS Code
function code-project() {
local dir=$(zoxide query "$1")
if [ -n "$dir" ]; then
code "$dir"
else
echo "Projet non trouvé : $1"
fi
}