Pular para o conteúdo

Zoxide

Comando cd mais inteligente que aprende seus hábitos usando um algoritmo de frecência para navegação rápida entre diretórios em diferentes shells.

ComandoDescrição
brew install zoxideInstalar no macOS com Homebrew
cargo install zoxide --lockedInstalar a partir do crates.io
apt install zoxideInstalar no Debian/Ubuntu
pacman -S zoxideInstalar no Arch Linux
dnf install zoxideInstalar no Fedora
scoop install zoxideInstalar no Windows com Scoop
winget install ajeetdsouza.zoxideInstalar no Windows com winget
nix-env -i zoxideInstalar no NixOS
conda install -c conda-forge zoxideInstalar com Conda
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | shInstalar via script shell
ComandoDescrição
eval "$(zoxide init bash)"Inicializar para Bash (adicionar ao .bashrc)
eval "$(zoxide init zsh)"Inicializar para Zsh (adicionar ao .zshrc)
zoxide init fish | sourceInicializar para Fish (adicionar ao config.fish)
Invoke-Expression (& { (zoxide init powershell) })Inicializar para PowerShell
zoxide init nushell | save -f ~/.zoxide.nuInicializar para Nushell
eval "$(zoxide init elvish)"Inicializar para Elvish
eval (zoxide init xonsh)Inicializar para Xonsh
# Bash — adicionar ao ~/.bashrc
eval "$(zoxide init bash)"

# Zsh — adicionar ao ~/.zshrc
eval "$(zoxide init zsh)"

# Fish — adicionar ao ~/.config/fish/config.fish
zoxide init fish | source

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

# Nushell — adicionar ao env.nu
zoxide init nushell | save -f ~/.zoxide.nu
source ~/.zoxide.nu
ComandoDescrição
z fooSaltar para o diretório com melhor classificação correspondente a “foo”
z foo barSaltar para o diretório correspondente a “foo” e “bar”
z ~/projectsSaltar para o caminho exato (como cd)
z ..Ir para o diretório pai
z -Ir para o diretório anterior
zIr para o diretório home (sem argumentos)
ziSeleção interativa com fzf
zi fooSeleção interativa pré-filtrada por “foo”
z foo/Saltar para subdiretório (barra final)
# Após visitar diretórios, o zoxide os aprende
cd ~/projects/myapp          # Ensinar ao zoxide sobre este caminho
cd ~/documents/reports       # Ensinar ao zoxide sobre este caminho
cd /var/log/nginx            # Ensinar ao zoxide sobre este caminho

# Depois, saltar com correspondências parciais
z myapp                      # Salta para ~/projects/myapp
z reports                    # Salta para ~/documents/reports
z nginx                      # Salta para /var/log/nginx

# Múltiplas palavras-chave refinam a correspondência
z proj myapp                 # Corresponde especificamente a ~/projects/myapp
z doc rep                    # Corresponde a ~/documents/reports
ComandoDescrição
z projCorresponder qualquer diretório contendo “proj”
z proj rustCorresponder diretório contendo “proj” e “rust”
z /home/user/docsUsar caminho absoluto diretamente
z docs/Corresponder e preferir subdiretório chamado “docs”
Palavras-chave correspondem a componentes do caminho”proj” corresponde a /home/user/projects
Última palavra-chave pode corresponder prefixoz pr corresponde a projects
Múltiplas palavras-chave usam correspondência ANDTodas devem aparecer no caminho
Correspondência não diferencia maiúsculasz PROJ corresponde a projects
ConceitoDescrição
Frecência = Frequência + RecênciaPontuação baseada em frequência e recência de visitas
Visitas recentes pontuam maisDiretórios visitados hoje pontuam mais que na semana passada
Diretórios visitados frequentemente classificam melhorUso regular aumenta a pontuação ao longo do tempo
Pontuações decaem com o tempoDiretórios não utilizados perdem classificação gradualmente
Banco de dados auto-limpa pontuações baixasEntradas antigas e não utilizadas são removidas automaticamente
Máximo de entradas controlado por _ZO_MAXAGEPadrão: 10.000 entradas
ComandoDescrição
ziAbrir fzf com todos os diretórios rastreados
zi queryAbrir fzf pré-filtrado por consulta
↑ / ↓ no fzfNavegar nos resultados
Enter no fzfSelecionar e saltar para o diretório
Escape no fzfCancelar seleção
Digitar no fzf para filtrarRefinar resultados ainda mais
Requer fzf instaladoInstalar fzf para modo interativo
Tab no fzfAlternar seleção (modo multi-seleção)
# Abrir buscador fuzzy interativo com todos os diretórios rastreados
zi

# Pré-filtrar para diretórios contendo "project"
zi project

# Formato de saída no fzf mostra pontuações:
#   3.50   /home/user/projects/myapp
#   2.10   /home/user/projects/api
#   1.20   /var/www/project-site
ComandoDescrição
eval "$(zoxide init bash --cmd cd)"Substituir cd pelo zoxide no Bash
eval "$(zoxide init zsh --cmd cd)"Substituir cd pelo zoxide no Zsh
--cmd cd substitui o comando cdFaz o cd usar zoxide (cd, cdi)
--cmd j cria j e jiUsar nomes de comandos personalizados
Padrão cria z e ziComandos padrão do zoxide
ComandoDescrição
--hook pwdAtualizar banco de dados ao mudar de diretório (padrão)
--hook promptAtualizar banco de dados a cada prompt
--hook noneDesativar rastreamento automático
# Substituir cd no Bash pelo zoxide
eval "$(zoxide init bash --cmd cd)"
# Agora 'cd' usa zoxide, 'cdi' abre interativo

# Usar nome de comando personalizado
eval "$(zoxide init zsh --cmd j)"
# Agora 'j foo' salta, 'ji' abre interativo

# Combinar com fzf para experiência aprimorada
export _ZO_FZF_OPTS="--height 40% --reverse --border"
ComandoDescrição
zoxide query fooMostrar melhor correspondência sem saltar
zoxide query foo --listListar todas as correspondências com pontuações
zoxide query foo --scoreMostrar correspondências com pontuações de frecência
zoxide query --allListar todo o banco de dados
zoxide query --all --scoreListar banco de dados com pontuações
zoxide query --exclude /pathExcluir caminho específico dos resultados
zoxide query --list | head -20Top 20 diretórios
ComandoDescrição
zoxide add /path/to/dirAdicionar diretório manualmente ao banco de dados
zoxide remove /path/to/dirRemover diretório do banco de dados
zoxide editAbrir banco de dados no $EDITOR (interativo)
Banco de dados armazenado em $_ZO_DATA_DIR/db.zoLocalização padrão do banco de dados
# Verificar o que o zoxide corresponderia
zoxide query project --list --score
# Saída:
#    12.00  /home/user/projects/webapp
#     8.50  /home/user/projects/api
#     3.20  /home/user/old-project

# Alimentar manualmente o banco de dados para novas máquinas
zoxide add ~/projects/webapp
zoxide add ~/projects/api
zoxide add ~/.config/nvim

# Remover entradas obsoletas (diretórios deletados)
zoxide query --all | while read -r dir; do
  [ -d "$dir" ] || zoxide remove "$dir"
done

# Exportar banco de dados para backup
zoxide query --all --score > zoxide-backup.txt
ComandoDescrição
zoxide import --from z path/to/.zImportar do banco de dados z.sh
zoxide import --from autojump path/to/autojump.txtImportar do banco de dados autojump
zoxide import --merge --from z path/to/.zImportar com mesclagem (manter entradas existentes)
zoxide import --from z --merge ~/.zImportação comum do z.sh
# Migrar do z.sh (mais comum)
zoxide import --from z ~/.z

# Migrar do autojump
zoxide import --from autojump ~/.local/share/autojump/autojump.txt

# Mesclar com banco de dados existente (não sobrescrever)
zoxide import --merge --from z ~/.z

# Após importar, verificar
zoxide query --all --score | head -20
ComandoDescrição
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"Definir diretório do banco de dados
export _ZO_ECHO=1Imprimir diretório correspondido antes de saltar
export _ZO_EXCLUDE_DIRS="/tmp/*:/private/*"Excluir diretórios do rastreamento
export _ZO_FZF_OPTS="--height 40%"Opções personalizadas do fzf para zi
export _ZO_MAXAGE=10000Definir máximo de entradas no banco de dados
export _ZO_RESOLVE_SYMLINKS=1Resolver symlinks antes de armazenar
# ~/.bashrc ou ~/.zshrc — configuração completa do zoxide

# Definir diretório personalizado de dados
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"

# Imprimir o diretório correspondido antes de saltar
export _ZO_ECHO=1

# Excluir diretórios temporários e do sistema
export _ZO_EXCLUDE_DIRS="$HOME:$HOME/Downloads:/tmp/*:/private/*"

# Personalizar aparência do fzf para modo interativo
export _ZO_FZF_OPTS="
  --height 40%
  --layout reverse
  --border rounded
  --preview 'ls -la {2..}'
  --preview-window right:40%
"

# Máximo de entradas antes da limpeza (padrão: 10000)
export _ZO_MAXAGE=10000

# Resolver symlinks para caminhos canônicos
export _ZO_RESOLVE_SYMLINKS=1

# Inicializar zoxide (deve ser APÓS as exportações)
eval "$(zoxide init zsh)"
ComandoDescrição
z <Tab>Autocompletar a partir de diretórios rastreados
z foo<Tab>Completar diretórios correspondentes
Completação Bash via zoxide initAutomática com inicialização do shell
Completação Zsh via zoxide initAutomática com inicialização do shell
Completação Fish via zoxide initAutomática com inicialização do shell
  1. Deixe o zoxide aprender naturalmente — Use seu shell normalmente e o zoxide construirá seu banco de dados a partir dos seus hábitos. Não tente alimentar manualmente cada diretório.

  2. Use duas palavras-chave para precisão — Quando múltiplos diretórios correspondem, adicione uma segunda palavra-chave: z proj api é mais preciso que apenas z api.

  3. Use barra final para subdiretóriosz foo/ prefere subdiretórios do diretório atual chamados “foo”, enquanto z foo busca em todo o banco de dados.

  4. Substitua cd para aprendizado máximo — Use --cmd cd na inicialização do shell para que cada mudança de diretório alimente o zoxide, não apenas quando você lembrar de usar z.

  5. Configure exclusões cedo — Defina _ZO_EXCLUDE_DIRS para pular diretórios temporários, pastas de build e caminhos de node_modules que poluem os resultados.

  6. Use zi para saltos ambíguos — Quando não tem certeza qual diretório vai corresponder, use zi (interativo) para visualizar e selecionar entre os candidatos.

  7. Migre dados existentes — Se estiver mudando do z.sh, autojump ou fasd, importe seu banco de dados com zoxide import para começar com um cache quente.

  8. Limpe entradas obsoletas — Periodicamente remova entradas de diretórios deletados usando zoxide edit ou um script de limpeza para manter os resultados relevantes.

  9. Faça backup do seu banco de dados — Exporte com zoxide query --all --score antes de reinstalar o SO ou migrar máquinas.

  10. Personalize a aparência do fzf — Defina _ZO_FZF_OPTS com --preview 'ls {2..}' para mostrar o conteúdo do diretório no seletor interativo.