Un comando cd più intelligente che impara le tue directory più utilizzate e ti permette di saltare ad esse con solo poche battute di tasti. Usa un algoritmo di “frecency” che combina frequenza e recency delle visite.
| Piattaforma | Comando |
|---|
| macOS (Homebrew) | brew install zoxide |
| Ubuntu/Debian | sudo apt install zoxide |
| Arch Linux | sudo pacman -S zoxide |
| Fedora/RHEL | sudo dnf install zoxide |
| Windows (Winget) | winget install ajeetdsouza.zoxide |
| Windows (Scoop) | scoop install zoxide |
| Windows (Chocolatey) | choco install zoxide |
| Cargo (Tutte le piattaforme) | cargo install zoxide --locked |
| Conda | conda install -c conda-forge zoxide |
| Nix | nix-env -iA nixpkgs.zoxide |
| Script di installazione | curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh |
Aggiungi la riga appropriata al tuo file di configurazione della shell:
| Shell | File di Configurazione | Comando da Aggiungere |
|---|
| Bash | ~/.bashrc | eval "$(zoxide init bash)" |
| Zsh | ~/.zshrc | eval "$(zoxide init zsh)" |
| Fish | ~/.config/fish/config.fish | zoxide init fish | source |
| PowerShell | Profile | Invoke-Expression (& { (zoxide init powershell | Out-String) }) |
| Elvish | ~/.elvish/rc.elv | eval (zoxide init elvish | slurp) |
| Nushell | env.nu | zoxide init nushell | save -f ~/.zoxide.nu |
| Xonsh | ~/.xonshrc | execx($(zoxide init xonsh)) |
| Comando | Descrizione |
|---|
z foo | Salta alla directory con ranking più alto che corrisponde a “foo” |
z foo bar | Salta alla directory che corrisponde sia a “foo” che “bar” |
z ~/projects | Salta al percorso esatto (funziona come il normale cd) |
z .. | Sali di una directory |
z - | Ritorna alla directory precedente |
zi foo | Selezione interattiva con fzf (quando ci sono corrispondenze multiple) |
zi | Selezione interattiva da tutte le directory tracciate |
zoxide abbina i percorsi delle directory tramite parole chiave. Non è necessario digitare il percorso completo:
# Se visiti frequentemente /home/user/projects/my-app
z my-app # Salta direttamente lì
z proj app # Funziona anche (corrisponde a entrambe le parole nel percorso)
z app # Funziona se è la tua directory "app" più frequente
Punteggio: Le directory ottengono punti quando vengono visitate. Le visite recenti hanno punteggi più alti. Le directory non utilizzate decadono nel tempo.
| Comando | Descrizione |
|---|
zoxide add /path/to/dir | Aggiungi manualmente una directory al database |
zoxide remove /path/to/dir | Rimuovi una directory dal database |
zoxide edit | Apri il database in $EDITOR per modifica manuale |
zoxide query foo | Mostra la migliore corrispondenza per “foo” (senza saltare) |
zoxide query -l | Elenca tutte le directory nel database, ordinate per punteggio |
zoxide query -l foo | Elenca tutte le corrispondenze per “foo” con punteggi |
zoxide query -ls foo | Elenca corrispondenze con punteggi, ordinate per punteggio |
zoxide query -i foo | Modalità di selezione interattiva |
Stai migrando da un altro strumento per saltare tra directory? Importa il tuo database:
| Comando | Descrizione |
|---|
zoxide import --from=autojump /path/to/db | Importa da autojump |
zoxide import --from=z /path/to/db | Importa da z/z.sh |
zoxide import --from=fasd /path/to/db | Importa da fasd |
Posizioni predefinite dei database da importare:
- autojump:
~/.local/share/autojump/autojump.txt
- z:
~/.z
- fasd:
~/.fasd
| Variabile | Predefinito | Descrizione |
|---|
_ZO_DATA_DIR | Specifico della piattaforma | Directory per memorizzare il database |
_ZO_ECHO | 0 | Stampa directory corrispondente prima di navigare (1 per abilitare) |
_ZO_EXCLUDE_DIRS | Nessuno | Directory da escludere (percorsi separati da due punti) |
_ZO_FZF_OPTS | Nessuno | Opzioni personalizzate passate a fzf in modalità interattiva |
_ZO_MAXAGE | 10000 | Numero massimo di voci nel database |
_ZO_RESOLVE_SYMLINKS | 0 | Risolvi symlink prima di memorizzare i percorsi (1 per abilitare) |
| Opzione | Descrizione |
|---|
--cmd j | Cambia nome comando da z a j (crea j e ji) |
--hook prompt | Aggiorna punteggi ad ogni prompt (predefinito) |
--hook pwd | Aggiorna punteggi solo quando la directory cambia |
--hook none | Non aggiornare mai automaticamente i punteggi |
--no-cmd | Non creare alias z e zi (usa direttamente __zoxide_z) |
# Esempio: usa 'j' invece di 'z', aggiorna solo al cambio directory
eval "$(zoxide init bash --cmd j --hook pwd)"
# Escludi directory home e tmp dal tracciamento
export _ZO_EXCLUDE_DIRS="$HOME:/tmp:/private/tmp"
# Usa anteprima fzf personalizzata
export _ZO_FZF_OPTS="--preview 'eza -la --icons {2..}' --preview-window=right:40%"
# Salta a una directory di progetto per nome parziale
z myproject
# Disambigua con parole chiave multiple
z work api # corrisponde a ~/work/projects/api-server
# Modalità interattiva quando non sei sicuro
zi deploy # apre fzf con tutte le directory corrispondenti
# Controlla cosa zoxide pensa sia la migliore corrispondenza
zoxide query deploy
# Vedi tutte le directory tracciate e i loro punteggi
zoxide query -ls
# Pulisci le directory eliminate dal database
zoxide query -l | while read -r line; do
dir=$(echo "$line" | awk '{print $2}')
[ ! -d "$dir" ] && zoxide remove "$dir"
done
Quando usi zi, zoxide usa automaticamente fzf per la selezione interattiva. Assicurati che fzf sia installato perché questo funzioni.
zoxide fornisce completamenti tab. Dopo l’integrazione shell, premendo Tab dopo z suggerirà le directory corrispondenti.
| Funzionalità | cd | zoxide (z) |
|---|
| Vai al percorso esatto | cd /full/path | z /full/path |
| Corrispondenza parziale | No | Sì (z proj) |
| Ranking frecency | No | Sì |
| Selezione interattiva | No | Sì (zi) |
| Directory precedente | cd - | z - |
| Comportamento appreso | No | Impara dall’uso |
| Importazione database | N/D | autojump, z, fasd |
| Problema | Soluzione |
|---|
Comando z non trovato | Assicurati che la riga di integrazione shell sia nel tuo file di configurazione shell e riavvia la shell |
| Nessuna corrispondenza trovata | Visita le directory con cd prima — zoxide impara nel tempo |
| Directory sbagliata abbinata | Usa parole chiave più specifiche: z work api invece di z api |
| Database troppo grande | Abbassa _ZO_MAXAGE o esegui zoxide edit per pulire |