Um comando cd mais inteligente que aprende seus diretórios mais usados e permite saltar para eles com apenas algumas teclas. Usa um algoritmo de “frecência” que combina frequência e recência de visitas.
| Plataforma | 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 (Todas as plataformas) | cargo install zoxide --locked |
| Conda | conda install -c conda-forge zoxide |
| Nix | nix-env -iA nixpkgs.zoxide |
| Script de instalação | curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh |
Adicione a linha apropriada ao seu arquivo de configuração do shell:
| Shell | Arquivo de Configuração | Comando para Adicionar |
|---|
| 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 | Descrição |
|---|
z foo | Saltar para o diretório mais bem classificado que corresponde a “foo” |
z foo bar | Saltar para diretório que corresponde a “foo” e “bar” |
z ~/projects | Saltar para caminho exato (funciona como cd regular) |
z .. | Subir um diretório |
z - | Retornar ao diretório anterior |
zi foo | Seleção interativa com fzf (quando há múltiplas correspondências) |
zi | Seleção interativa de todos os diretórios rastreados |
zoxide corresponde caminhos de diretório por palavras-chave. Você não precisa digitar o caminho completo:
# Se você visita frequentemente /home/user/projects/my-app
z my-app # Salta diretamente para lá
z proj app # Também funciona (corresponde ambas as palavras no caminho)
z app # Funciona se for seu diretório "app" mais frequente
Pontuação: Diretórios ganham pontos quando visitados. Visitas recentes pontuam mais alto. Diretórios não usados decaem com o tempo.
| Comando | Descrição |
|---|
zoxide add /path/to/dir | Adicionar manualmente um diretório ao banco de dados |
zoxide remove /path/to/dir | Remover um diretório do banco de dados |
zoxide edit | Abrir banco de dados em $EDITOR para edição manual |
zoxide query foo | Mostrar a melhor correspondência para “foo” (sem saltar) |
zoxide query -l | Listar todos os diretórios no banco de dados, ordenados por pontuação |
zoxide query -l foo | Listar todas as correspondências para “foo” com pontuações |
zoxide query -ls foo | Listar correspondências com pontuações, ordenadas por pontuação |
zoxide query -i foo | Modo de seleção interativa |
Migrando de outro navegador de diretórios? Importe seu banco de dados:
| Comando | Descrição |
|---|
zoxide import --from=autojump /path/to/db | Importar do autojump |
zoxide import --from=z /path/to/db | Importar do z/z.sh |
zoxide import --from=fasd /path/to/db | Importar do fasd |
Localizações padrão de banco de dados para importar:
- autojump:
~/.local/share/autojump/autojump.txt
- z:
~/.z
- fasd:
~/.fasd
| Variável | Padrão | Descrição |
|---|
_ZO_DATA_DIR | Específico da plataforma | Diretório para armazenar o banco de dados |
_ZO_ECHO | 0 | Imprimir diretório correspondido antes de navegar (1 para habilitar) |
_ZO_EXCLUDE_DIRS | Nenhum | Diretórios para excluir (caminhos separados por dois pontos) |
_ZO_FZF_OPTS | Nenhum | Opções personalizadas passadas ao fzf no modo interativo |
_ZO_MAXAGE | 10000 | Número máximo de entradas no banco de dados |
_ZO_RESOLVE_SYMLINKS | 0 | Resolver links simbólicos antes de armazenar caminhos (1 para habilitar) |
| Opção | Descrição |
|---|
--cmd j | Mudar nome do comando de z para j (cria j e ji) |
--hook prompt | Atualizar pontuações a cada prompt (padrão) |
--hook pwd | Atualizar pontuações apenas quando o diretório muda |
--hook none | Nunca atualizar pontuações automaticamente |
--no-cmd | Não criar aliases z e zi (usar __zoxide_z diretamente) |
# Exemplo: usar 'j' em vez de 'z', atualizar apenas em mudança de diretório
eval "$(zoxide init bash --cmd j --hook pwd)"
# Excluir diretório home e tmp do rastreamento
export _ZO_EXCLUDE_DIRS="$HOME:/tmp:/private/tmp"
# Usar visualização personalizada do fzf
export _ZO_FZF_OPTS="--preview 'eza -la --icons {2..}' --preview-window=right:40%"
# Saltar para um diretório de projeto por nome parcial
z myproject
# Desambiguar com múltiplas palavras-chave
z work api # corresponde a ~/work/projects/api-server
# Modo interativo quando você não tem certeza
zi deploy # abre fzf com todos os diretórios correspondentes
# Verificar o que zoxide pensa ser a melhor correspondência
zoxide query deploy
# Ver todos os diretórios rastreados e suas pontuações
zoxide query -ls
# Limpar diretórios excluídos do banco de dados
zoxide query -l | while read -r line; do
dir=$(echo "$line" | awk '{print $2}')
[ ! -d "$dir" ] && zoxide remove "$dir"
done
Quando você usa zi, zoxide usa automaticamente fzf para seleção interativa. Certifique-se de que o fzf está instalado para que isso funcione.
zoxide fornece completações com Tab. Após a integração do shell, pressionar Tab após z irá sugerir diretórios correspondentes.
| Recurso | cd | zoxide (z) |
|---|
| Ir para caminho exato | cd /full/path | z /full/path |
| Correspondência parcial | Não | Sim (z proj) |
| Classificação por frecência | Não | Sim |
| Seleção interativa | Não | Sim (zi) |
| Diretório anterior | cd - | z - |
| Aprendizado de comportamento | Não | Aprende com o uso |
| Importação de banco de dados | N/A | autojump, z, fasd |
| Problema | Solução |
|---|
Comando z não encontrado | Certifique-se de que a linha de integração do shell está em seu arquivo de configuração e reinicie o shell |
| Nenhuma correspondência encontrada | Visite diretórios com cd primeiro — zoxide aprende com o tempo |
| Diretório errado correspondido | Use palavras-chave mais específicas: z work api em vez de z api |
| Banco de dados muito grande | Diminua _ZO_MAXAGE ou execute zoxide edit para limpar |