Ir al contenido

Zoxide

Comando cd más inteligente que aprende tus hábitos usando un algoritmo de frecuencia para una navegación rápida de directorios en múltiples shells.

ComandoDescripción
brew install zoxideInstalar en macOS con Homebrew
cargo install zoxide --lockedInstalar desde crates.io
apt install zoxideInstalar en Debian/Ubuntu
pacman -S zoxideInstalar en Arch Linux
dnf install zoxideInstalar en Fedora
scoop install zoxideInstalar en Windows con Scoop
winget install ajeetdsouza.zoxideInstalar en Windows con winget
nix-env -i zoxideInstalar en NixOS
conda install -c conda-forge zoxideInstalar con Conda
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | shInstalar mediante script de shell
ComandoDescripción
eval "$(zoxide init bash)"Inicializar para Bash (agregar a .bashrc)
eval "$(zoxide init zsh)"Inicializar para Zsh (agregar a .zshrc)
zoxide init fish | sourceInicializar para Fish (agregar a 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 — agregar a ~/.bashrc
eval "$(zoxide init bash)"

# Zsh — agregar a ~/.zshrc
eval "$(zoxide init zsh)"

# Fish — agregar a ~/.config/fish/config.fish
zoxide init fish | source

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

# Nushell — agregar a env.nu
zoxide init nushell | save -f ~/.zoxide.nu
source ~/.zoxide.nu
ComandoDescripción
z fooSaltar al directorio mejor clasificado que coincida con “foo”
z foo barSaltar al directorio que coincida con “foo” y “bar”
z ~/projectsSaltar a una ruta exacta (como cd)
z ..Ir al directorio padre
z -Ir al directorio anterior
zIr al directorio home (sin argumentos)
ziSelección interactiva con fzf
zi fooSelección interactiva prefiltrada por “foo”
z foo/Saltar a subdirectorio (barra final)
# Después de visitar directorios, zoxide los aprende
cd ~/projects/myapp          # Enseñar a zoxide esta ruta
cd ~/documents/reports       # Enseñar a zoxide esta ruta
cd /var/log/nginx            # Enseñar a zoxide esta ruta

# Más tarde, saltar con coincidencias parciales
z myapp                      # Salta a ~/projects/myapp
z reports                    # Salta a ~/documents/reports
z nginx                      # Salta a /var/log/nginx

# Múltiples palabras clave afinan la coincidencia
z proj myapp                 # Coincide con ~/projects/myapp específicamente
z doc rep                    # Coincide con ~/documents/reports
ComandoDescripción
z projCoincidir con cualquier directorio que contenga “proj”
z proj rustCoincidir con directorio que contenga “proj” y “rust”
z /home/user/docsUsar ruta absoluta directamente
z docs/Coincidir y preferir subdirectorio llamado “docs”
Las palabras clave coinciden con componentes de ruta”proj” coincide con /home/user/projects
La última palabra clave puede coincidir con prefijoz pr coincide con projects
Múltiples palabras clave se combinan con ANDTodas deben aparecer en la ruta
La coincidencia no distingue mayúsculasz PROJ coincide con projects
ConceptoDescripción
Frecuencia = Frecuencia + RecenciaPuntuación basada en cuán frecuente y recientemente se visitó
Las visitas recientes puntúan más altoDirectorios visitados hoy puntúan más que los de la semana pasada
Los directorios frecuentemente visitados se clasifican más altoEl uso regular aumenta la puntuación con el tiempo
Las puntuaciones decaen con el tiempoLos directorios sin usar pierden clasificación gradualmente
La base de datos auto-elimina puntuaciones bajasLas entradas antiguas sin usar se eliminan automáticamente
Máximo de entradas controlado por _ZO_MAXAGEPor defecto: 10,000 entradas
ComandoDescripción
ziAbrir fzf con todos los directorios rastreados
zi queryAbrir fzf prefiltrado por consulta
↑ / ↓ en fzfNavegar resultados
Enter en fzfSeleccionar y saltar al directorio
Escape en fzfCancelar selección
Escribir en fzf para filtrarRefinar resultados adicionales
Requiere fzf instaladoInstalar fzf para el modo interactivo
Tab en fzfAlternar selección (modo multi-selección)
# Abrir el buscador difuso interactivo con todos los directorios rastreados
zi

# Prefiltrar a directorios que contengan "project"
zi project

# El formato de salida en fzf muestra puntuaciones:
#   3.50   /home/user/projects/myapp
#   2.10   /home/user/projects/api
#   1.20   /var/www/project-site
ComandoDescripción
eval "$(zoxide init bash --cmd cd)"Reemplazar cd con zoxide en Bash
eval "$(zoxide init zsh --cmd cd)"Reemplazar cd con zoxide en Zsh
--cmd cd reemplaza el comando cdHace que cd use zoxide (cd, cdi)
--cmd j crea j y jiUsar nombres de comando personalizados
Por defecto crea z y ziComandos estándar de zoxide
ComandoDescripción
--hook pwdActualizar base de datos al cambiar de directorio (por defecto)
--hook promptActualizar base de datos en cada prompt
--hook noneDesactivar rastreo automático
# Reemplazar cd en Bash con zoxide
eval "$(zoxide init bash --cmd cd)"
# Ahora 'cd' usa zoxide, 'cdi' abre el modo interactivo

# Usar nombre de comando personalizado
eval "$(zoxide init zsh --cmd j)"
# Ahora 'j foo' salta, 'ji' abre el modo interactivo

# Combinar con fzf para una experiencia mejorada
export _ZO_FZF_OPTS="--height 40% --reverse --border"
ComandoDescripción
zoxide query fooMostrar mejor coincidencia sin saltar
zoxide query foo --listListar todas las coincidencias con puntuaciones
zoxide query foo --scoreMostrar coincidencias con puntuaciones de frecuencia
zoxide query --allListar toda la base de datos
zoxide query --all --scoreListar base de datos con puntuaciones
zoxide query --exclude /pathExcluir ruta específica de los resultados
zoxide query --list | head -20Top 20 directorios
ComandoDescripción
zoxide add /path/to/dirAgregar directorio manualmente a la base de datos
zoxide remove /path/to/dirEliminar directorio de la base de datos
zoxide editAbrir base de datos en $EDITOR (interactivo)
Base de datos almacenada en $_ZO_DATA_DIR/db.zoUbicación por defecto de la base de datos
# Verificar qué coincidiría zoxide
zoxide query project --list --score
# Salida:
#    12.00  /home/user/projects/webapp
#     8.50  /home/user/projects/api
#     3.20  /home/user/old-project

# Alimentar manualmente la base de datos para máquinas nuevas
zoxide add ~/projects/webapp
zoxide add ~/projects/api
zoxide add ~/.config/nvim

# Eliminar entradas obsoletas (directorios eliminados)
zoxide query --all | while read -r dir; do
  [ -d "$dir" ] || zoxide remove "$dir"
done

# Exportar base de datos para respaldo
zoxide query --all --score > zoxide-backup.txt
ComandoDescripción
zoxide import --from z path/to/.zImportar desde base de datos de z.sh
zoxide import --from autojump path/to/autojump.txtImportar desde base de datos de autojump
zoxide import --merge --from z path/to/.zImportar fusionando (mantener entradas existentes)
zoxide import --from z --merge ~/.zImportación común de z.sh
# Migrar desde z.sh (más común)
zoxide import --from z ~/.z

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

# Fusionar con base de datos existente (no sobrescribir)
zoxide import --merge --from z ~/.z

# Después de importar, verificar
zoxide query --all --score | head -20
ComandoDescripción
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"Establecer directorio de la base de datos
export _ZO_ECHO=1Imprimir directorio coincidente antes de saltar
export _ZO_EXCLUDE_DIRS="/tmp/*:/private/*"Excluir directorios del rastreo
export _ZO_FZF_OPTS="--height 40%"Opciones personalizadas de fzf para zi
export _ZO_MAXAGE=10000Establecer máximo de entradas en la base de datos
export _ZO_RESOLVE_SYMLINKS=1Resolver enlaces simbólicos antes de almacenar
# ~/.bashrc o ~/.zshrc — configuración completa de zoxide

# Establecer directorio de datos personalizado
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"

# Imprimir el directorio coincidente antes de saltar
export _ZO_ECHO=1

# Excluir directorios temporales y del sistema
export _ZO_EXCLUDE_DIRS="$HOME:$HOME/Downloads:/tmp/*:/private/*"

# Personalizar apariencia de fzf para el modo interactivo
export _ZO_FZF_OPTS="
  --height 40%
  --layout reverse
  --border rounded
  --preview 'ls -la {2..}'
  --preview-window right:40%
"

# Máximo de entradas antes de podar (por defecto: 10000)
export _ZO_MAXAGE=10000

# Resolver enlaces simbólicos a rutas canónicas
export _ZO_RESOLVE_SYMLINKS=1

# Inicializar zoxide (debe ser DESPUÉS de los exports)
eval "$(zoxide init zsh)"
ComandoDescripción
z <Tab>Autocompletar desde directorios rastreados
z foo<Tab>Completar directorios coincidentes
Completado de Bash mediante zoxide initAutomático con la inicialización del shell
Completado de Zsh mediante zoxide initAutomático con la inicialización del shell
Completado de Fish mediante zoxide initAutomático con la inicialización del shell
  1. Deja que zoxide aprenda naturalmente — Usa tu shell normalmente y zoxide construirá su base de datos a partir de tus hábitos. No intentes alimentar manualmente cada directorio.

  2. Usa dos palabras clave para precisión — Cuando múltiples directorios coinciden, agrega una segunda palabra clave: z proj api es más preciso que z api solo.

  3. Usa barra final para subdirectoriosz foo/ prefiere subdirectorios del directorio actual llamados “foo”, mientras que z foo busca en toda la base de datos.

  4. Reemplaza cd para máximo aprendizaje — Usa --cmd cd en la inicialización de tu shell para que cada cambio de directorio alimente a zoxide, no solo cuando recuerdes usar z.

  5. Configura exclusiones temprano — Establece _ZO_EXCLUDE_DIRS para omitir directorios temporales, carpetas de compilación y rutas de node_modules que contaminan los resultados.

  6. Usa zi para saltos ambiguos — Cuando no estés seguro de qué directorio coincidirá, usa zi (interactivo) para previsualizar y seleccionar entre candidatos.

  7. Migra datos existentes — Si cambias desde z.sh, autojump o fasd, importa tu base de datos con zoxide import para comenzar con una caché precargada.

  8. Limpia entradas obsoletas — Periódicamente elimina entradas de directorios borrados usando zoxide edit o un script de limpieza para mantener los resultados relevantes.

  9. Respalda tu base de datos — Exporta con zoxide query --all --score antes de reinstalaciones del SO o migraciones de máquina.

  10. Personaliza la apariencia de fzf — Establece _ZO_FZF_OPTS con --preview 'ls {2..}' para mostrar el contenido del directorio en el selector interactivo.