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 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
cave resolve -x zoxide |
</details> <details> <summary>macOS</summary>| 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|
</details> <details> <summary>Windows</summary>To install zoxide, use a package manager:
Repository Instructions crates.io cargo install zoxide --lockedHomebrew brew install zoxideconda-forge conda install -c conda-forge zoxideMacPorts port install zoxidenixpkgs nix-env -iA nixpkgs.zoxideOr, 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. The data file is auto-detected using each plugin's standard conventions.
zoxide import <plugin>
| Plugin | Command |
|---|---|
| atuin | zoxide import atuin |
| autojump | zoxide import autojump |
| fasd | zoxide import fasd |
| z | zoxide import z |
| z.lua | zoxide import z.lua |
| zsh-z | zoxide import zsh-z |
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 |