ajeetdsouza / zoxide
A smarter cd command. Supports all major shells.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing ajeetdsouza/zoxide in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Summary (README)
Preview<sup>Special thanks to:</sup>
<table> <tr> <td align="center"> <!-- markdownlint-disable-next-line MD013 --> <a href="https://go.warp.dev/zoxide"><img alt="Sponsored by Warp" width="230" src="https://raw.githubusercontent.com/warpdotdev/brand-assets/refs/heads/main/Github/Sponsor/Warp-Github-LG-03.png" /></a> <div><sup><b>Warp, built for coding with multiple AI agents.</b></sup></div> <div><sup>Available for macOS, Linux, and Windows.</sup></div> <div><sup> Visit <a href="https://go.warp.dev/zoxide"><u>warp.dev</u></a> to learn more. </sup></div> </td> <td align="center"> <!-- markdownlint-disable-next-line MD013 --> <a href="https://www.recall.ai/careers?ashby_jid=7b02811e-bc91-4ef2-925d-f56a5acac13b&utm_source=github&utm_medium=sponsorship&utm_campaign=zoxide"><img alt="Sponsored by Recall.ai" width="230" src="https://github.com/user-attachments/assets/0c5cb177-561c-4637-bef6-cf584939c829" /></a> <div><sup>Processing over 3TB/s of video at peak load,</sup></div> <!-- markdownlint-disable-next-line MD013 --> <div><sup>now <a href="https://www.recall.ai/careers?ashby_jid=7b02811e-bc91-4ef2-925d-f56a5acac13b&utm_source=github&utm_medium=sponsorship&utm_campaign=zoxide">hiring in SF.</a></sup></div> </td> </tr> </table> <hr />zoxide
zoxide is a smarter cd command, inspired by z and autojump.
It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes.<br /> zoxide works on all major shells.
Getting started • Installation • Configuration • Integrations
</div>Getting started

z foo # cd into highest ranked directory matching foo
z foo bar # cd into highest ranked directory matching foo and bar
z foo / # cd into a subdirectory starting with foo
z ~/foo # z also works like a regular cd command
z foo/ # cd into relative path
z .. # cd one level up
z - # cd into previous directory
zi foo # cd with interactive selection (using fzf)
z foo<SPACE><TAB> # show interactive completions (zoxide v0.8.0+, bash 4.4+/fish/zsh only)
Read more about the matching algorithm here.
Installation
zoxide can be installed in 4 easy steps:
-
Install binary
zoxide runs on most major platforms. If your platform isn't listed below, please open an issue.
<details> <summary>Linux / WSL</summary>
</details> <details> <summary>macOS</summary>The recommended way to install zoxide is via the install script:
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | shOr, you can use a package manager:
Distribution Repository Instructions Any crates.io cargo install zoxide --lockedAny asdf asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git<br />asdf install zoxide latestAny conda-forge conda install -c conda-forge zoxideAny guix guix install zoxideAny Linuxbrew brew install zoxideAny nixpkgs nix-env -iA nixpkgs.zoxideAlpine Linux 3.13+ Alpine Linux Packages apk add zoxideArch Linux Arch Linux Extra pacman -S zoxideDebian1Debian Packagesapt install zoxideDevuan 4.0+ Devuan Packages apt install zoxideExherbo Linux Exherbo packages cave resolve -x repository/rust<br />cave resolve -x zoxideFedora 32+ Fedora Packages dnf install zoxideGentoo Gentoo Packages emerge app-shells/zoxideManjaro pacman -S zoxideopenSUSE Tumbleweed openSUSE Factory zypper install zoxideParrot OS1apt install zoxideRaspbian1Raspbian Packagesapt install zoxideRhino Linux Pacstall Packages pacstall -I zoxide-debSlackware 15.0+ SlackBuilds Instructions Solus Solus Packages eopkg install zoxideUbuntu1Ubuntu Packagesapt install zoxideVoid Linux Void Linux Packages xbps-install -S zoxide
</details> <details> <summary>Windows</summary>To install zoxide, use a package manager:
Repository Instructions crates.io cargo install zoxide --lockedHomebrew brew install zoxideasdf asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git<br />asdf install zoxide latestconda-forge conda install -c conda-forge zoxideMacPorts port install zoxidenixpkgs nix-env -iA nixpkgs.zoxideOr, run this command in your terminal:
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
</details> <details> <summary>BSD</summary>zoxide works with PowerShell, as well as shells running in Cygwin, Git Bash, and MSYS2.
The recommended way to install zoxide is via
winget:winget install ajeetdsouza.zoxideOr, you can use an alternative package manager:
Repository Instructions crates.io cargo install zoxide --lockedChocolatey choco install zoxideconda-forge conda install -c conda-forge zoxideScoop scoop install zoxideIf you're using Cygwin, Git Bash, or MSYS2, you can also use the install script:
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
</details> <details> <summary>Android</summary>To install zoxide, use a package manager:
Distribution Repository Instructions Any crates.io cargo install zoxide --lockedDragonFly BSD DPorts pkg install zoxideFreeBSD FreshPorts pkg install zoxideNetBSD pkgsrc pkgin install zoxideOr, run this command in your terminal:
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
</details>To install zoxide, use a package manager:
Repository Instructions Termux pkg install zoxideOr, run this command in your terminal:
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash -
Setup zoxide on your shell
To start using zoxide, add it to your shell.
<details> <summary>Bash</summary>
</details> <details> <summary>Elvish</summary>Add this to the <ins>end</ins> of your config file (usually
~/.bashrc):eval "$(zoxide init bash)"
</details> <details> <summary>Fish</summary>Add this to the <ins>end</ins> of your config file (usually
~/.elvish/rc.elv):eval (zoxide init elvish | slurp)Note zoxide only supports elvish v0.18.0 and above.
</details> <details> <summary>Nushell</summary>Add this to the <ins>end</ins> of your config file (usually
~/.config/fish/config.fish):zoxide init fish | source
</details> <details> <summary>PowerShell</summary>Add this to the <ins>end</ins> of your env file (find it by running
$nu.env-pathin Nushell):zoxide init nushell | save -f ~/.zoxide.nuNow, add this to the <ins>end</ins> of your config file (find it by running
$nu.config-pathin Nushell):source ~/.zoxide.nuNote zoxide only supports Nushell v0.89.0+.
</details> <details> <summary>Tcsh</summary>Add this to the <ins>end</ins> of your config file (find it by running
echo $profilein PowerShell):Invoke-Expression (& { (zoxide init powershell | Out-String) })
</details> <details> <summary>Xonsh</summary>Add this to the <ins>end</ins> of your config file (usually
~/.tcshrc):zoxide init tcsh > ~/.zoxide.tcsh source ~/.zoxide.tcsh
</details> <details> <summary>Zsh</summary>Add this to the <ins>end</ins> of your config file (usually
~/.xonshrc):execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
</details> <details> <summary>Any POSIX shell</summary>Add this to the <ins>end</ins> of your config file (usually
~/.zshrc):eval "$(zoxide init zsh)"For completions to work, the above line must be added after
compinitis called. You may have to rebuild your completions cache by runningrm ~/.zcompdump*; compinit.
</details>Add this to the <ins>end</ins> of your config file:
eval "$(zoxide init posix --hook prompt)" -
Install fzf <sup>(optional)</sup>
fzf is a command-line fuzzy finder, used by zoxide for completions / interactive selection. It can be installed from here.
Note The minimum supported fzf version is v0.51.0.
-
Import your data <sup>(optional)</sup>
If you currently use any of these plugins, you may want to import your data into zoxide:
<details> <summary>autojump</summary>
</details> <details> <summary>fasd, z, z.lua, zsh-z</summary>Run this command in your terminal:
zoxide import --from=autojump "/path/to/autojump/db"The path usually varies according to your system:
OS Path Example Linux $XDG_DATA_HOME/autojump/autojump.txtor$HOME/.local/share/autojump/autojump.txt/home/alice/.local/share/autojump/autojump.txtmacOS $HOME/Library/autojump/autojump.txt/Users/Alice/Library/autojump/autojump.txtWindows %APPDATA%\autojump\autojump.txtC:\Users\Alice\AppData\Roaming\autojump\autojump.txt
</details> <details> <summary>ZLocation</summary>Run this command in your terminal:
zoxide import --from=z "path/to/z/db"The path usually varies according to your system:
Plugin Path fasd $_FASD_DATAor$HOME/.fasdz (bash/zsh) $_Z_DATAor$HOME/.zz (fish) $Z_DATAor$XDG_DATA_HOME/z/dataor$HOME/.local/share/z/dataz.lua (bash/zsh) $_ZL_DATAor$HOME/.zluaz.lua (fish) $XDG_DATA_HOME/zlua/zlua.txtor$HOME/.local/share/zlua/zlua.txtor$_ZL_DATAzsh-z $ZSHZ_DATAor$_Z_DATAor$HOME/.z
</details>Run this command in PowerShell:
$db = New-TemporaryFile (Get-ZLocation).GetEnumerator() | ForEach-Object { Write-Output ($_.Name+'|'+$_.Value+'|0') } | Out-File $db zoxide import --from=z $db
Configuration
Flags
When calling zoxide init, the following flags are available:
-
--cmd- Changes the prefix of the
zandzicommands. --cmd jwould change the commands to (j,ji).--cmd cdwould replace thecdcommand.
- Changes the prefix of the
-
--hook <HOOK>-
Changes how often zoxide increments a directory's score:
Hook Description noneNever promptAt every shell prompt pwd(default)Whenever the directory is changed
-
-
--no-cmd- Prevents zoxide from defining the
zandzicommands. - These functions will still be available in your shell as
__zoxide_zand__zoxide_zi, should you choose to redefine them.
- Prevents zoxide from defining the
Environment variables
Environment variables2 can be used for configuration. They must be set before
zoxide init is called.
-
_ZO_DATA_DIR-
Specifies the directory in which the database is stored.
-
The default value varies across OSes:
OS Path Example Linux / BSD $XDG_DATA_HOMEor$HOME/.local/share/home/alice/.local/sharemacOS $HOME/Library/Application Support/Users/Alice/Library/Application SupportWindows %LOCALAPPDATA%C:\Users\Alice\AppData\Local
-
-
_ZO_ECHO- When set to 1,
zwill print the matched directory before navigating to it.
- When set to 1,
-
_ZO_EXCLUDE_DIRS-
Excludes the specified directories from the database.
-
This is provided as a list of globs, separated by OS-specific characters:
OS Separator Example Linux / macOS / BSD :$HOME:$HOME/private/*Windows ;$HOME;$HOME/private/* -
By default, this is set to
"$HOME".
-
-
_ZO_FZF_OPTS -
_ZO_MAXAGE- Configures the aging algorithm, which limits the maximum number of entries in the database.
- By default, this is set to 10000.
-
_ZO_RESOLVE_SYMLINKS- When set to 1,
zwill resolve symlinks before adding directories to the database.
- When set to 1,
Third-party integrations
| Application | Description | Plugin |
|---|---|---|
| aerc | Email client | Natively supported |
| alfred | macOS launcher | alfred-zoxide |
| clink | Improved cmd.exe for Windows | clink-zoxide |
| emacs | Text editor | zoxide.el |
| felix | File manager | Natively supported |
| joshuto | File manager | Natively supported |
| lf | File manager | See the wiki |
| nnn | File manager | nnn-autojump |
| ranger | File manager | ranger-zoxide |
| raycast | macOS launcher | raycast-zoxide |
| rfm | File manager | Natively supported |
| sesh | tmux session manager | Natively supported |
| telescope.nvim | Fuzzy finder for Neovim | telescope-zoxide |
| tmux-session-wizard | tmux session manager | Natively supported |
| tmux-sessionx | tmux session manager | Natively supported |
| vim / neovim | Text editor | zoxide.vim |
| xplr | File manager | zoxide.xplr |
| xxh | Transports shell configuration over SSH | xxh-plugin-prerun-zoxide |
| yazi | File manager | Natively supported |
| zabb | Finds the shortest possible query for a path | Natively supported |
| zesh | zellij session manager | Natively supported |
| zsh-autocomplete | Realtime completions for zsh | Natively supported |