README.md
<sup>Special thanks to:</sup>
<table> <tr> <td align="center"> <!-- markdownlint-disable-next-line MD013 --> <a href="https://go.warp.dev/zoxide"></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"></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 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.
zoxide works on all major shells.
Getting started • Installation • Configuration • Integrations
</div>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 (bash 4.4+/fish/zsh only)
Read more about the matching algorithm here.
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>The recommended way to install zoxide is via the install script:
shcurl -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
asdf install zoxide latest |
</details> <details> <summary>macOS</summary>| Any | conda-forge |
conda install -c conda-forge zoxide| | Any | guix |guix install zoxide| | Any | Linuxbrew |brew install zoxide| | Any | nixpkgs |nix-env -iA nixpkgs.zoxide| | Alpine Linux 3.13+ | Alpine Linux Packages |apk add zoxide| | Arch Linux | Arch Linux Extra |pacman -S zoxide| |Debian1 |Debian Packages|| | Devuan 4.0+ | Devuan Packages |apt install zoxideapt install zoxide| | Exherbo Linux | Exherbo packages |cave resolve -x repository/rustcave resolve -x zoxide| | Fedora 32+ | Fedora Packages |dnf install zoxide| | Gentoo | Gentoo Packages |emerge app-shells/zoxide| | Manjaro | |pacman -S zoxide| | openSUSE Tumbleweed | openSUSE Factory |zypper install zoxide| |Parrot OS1 | || |apt install zoxideRaspbian1 |Raspbian Packages|| | Rhino Linux | Pacstall Packages |apt install zoxidepacstall -I zoxide-deb| | Slackware 15.0+ | SlackBuilds | Instructions | | Solus | Solus Packages |eopkg install zoxide| |Ubuntu1 |Ubuntu Packages|| | Void Linux | Void Linux Packages |apt install zoxidexbps-install -S zoxide|
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
asdf install zoxide latest |
</details> <details> <summary>Windows</summary>| conda-forge |
conda install -c conda-forge zoxide| | MacPorts |port install zoxide| | nixpkgs |nix-env -iA nixpkgs.zoxide|Or, run this command in your terminal:
shcurl -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:shwinget 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:
shcurl -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:
shcurl -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:
shcurl -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):sheval "$(zoxide init bash)"
</details> <details> <summary>Fish</summary>Add this to the <ins>end</ins> of your config file (usually
~/.elvish/rc.elv):sheval (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):shzoxide 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):shzoxide 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):shsource ~/.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):powershellInvoke-Expression (& { (zoxide init powershell | Out-String) })
</details> <details> <summary>Xonsh</summary>Add this to the <ins>end</ins> of your config file (usually
~/.tcshrc):shzoxide 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):pythonexecx($(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):sheval "$(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:
sheval "$(zoxide init posix --hook prompt)"
Note: Warp provides its own completions, so
Space+Tabcompletions are not supported there.
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:
shzoxide 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:
shzoxide 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:
powershell$db = New-TemporaryFile (Get-ZLocation).GetEnumerator() | ForEach-Object { Write-Output ($_.Name+'|'+$_.Value+'|0') } | Out-File $db zoxide import --from=z $db
When calling zoxide init, the following flags are available:
--cmd
z and zi commands.--cmd j would change the commands to (j, ji).--cmd cd would replace the cd command.--hook <HOOK>
Changes how often zoxide increments a directory's score:
| Hook | Description |
|---|---|
none | Never |
prompt | At every shell prompt |
pwd (default) | Whenever the directory is changed |
--no-cmd
z and zi commands.__zoxide_z and
__zoxide_zi, should you choose to redefine them.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_HOME or $HOME/.local/share | /home/alice/.local/share |
| macOS | $HOME/Library/Application Support | /Users/Alice/Library/Application Support |
| Windows | %LOCALAPPDATA% | C:\Users\Alice\AppData\Local |
_ZO_ECHO
z will print the matched directory before navigating to
it._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
_ZO_RESOLVE_SYMLINKS
z will resolve symlinks before adding directories to the
database.| 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 |