Special thanks to:
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
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.
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.
Linux / WSL
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
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.zoxideAlmaLinux dnf install zoxideAlpine Linux 3.13+ Alpine Linux Packages apk add zoxideArch Linux Arch Linux Extra pacman -S zoxideCentOS Stream dnf install zoxideDebian 11+1Debian Packagesapt install zoxideDevuan 4.0+ Devuan Packages apt install zoxideExherbo Linux Exherbo packages cave resolve -x repository/rust
cave resolve -x zoxideFedora 32+ Fedora Packages dnf install zoxideGentoo Gentoo Packages emerge app-shells/zoxideLinux Mint apt.cli.rs (unofficial) Setup the repository, then apt install zoxideManjaro pacman -S zoxideopenSUSE Tumbleweed openSUSE Factory zypper install zoxideParrot OS1apt install zoxideRaspbian 11+1Raspbian Packagesapt install zoxideRHEL 8+ dnf install zoxideRhino Linux Pacstall Packages pacstall -I zoxide-debRocky Linux dnf install zoxideSlackware 15.0+ SlackBuilds Instructions Solus Solus Packages eopkg install zoxideUbuntu apt.cli.rs (unofficial) Setup the repository, then apt install zoxideVoid Linux Void Linux Packages xbps-install -S zoxidemacOS
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 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 | shWindows
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.zoxide
Or, 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 | shBSD
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 | bashAndroid
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.
Bash
Add this to the end of your config file (usually
~/.bashrc):eval "$(zoxide init bash)"
Elvish
Add this to the end of your config file (usually
~/.elvish/rc.elv):eval (zoxide init elvish | slurp)
Note zoxide only supports elvish v0.18.0 and above.
Fish
Add this to the end of your config file (usually
~/.config/fish/config.fish):zoxide init fish | source
Nushell
Add this to the end of your env file (find it by running
$nu.env-pathin Nushell):zoxide init nushell | save -f ~/.zoxide.nu
Now, add this to the end of your config file (find it by running
$nu.config-pathin Nushell):source ~/.zoxide.nu
Note zoxide only supports Nushell v0.89.0+.
PowerShell
Add this to the end of your config file (find it by running
echo $profilein PowerShell):Invoke-Expression (& { (zoxide init powershell | Out-String) })
Tcsh
Add this to the end of your config file (usually
~/.tcshrc):zoxide init tcsh > ~/.zoxide.tcsh source ~/.zoxide.tcsh
Xonsh
Add this to the end of your config file (usually
~/.xonshrc):execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
Zsh
Add this to the end 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.Any POSIX shell
Add this to the end of your config file:
eval "$(zoxide init posix --hook prompt)"
-
Install fzf (optional)
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 (optional)
If you currently use any of these plugins, you may want to import your data into zoxide:
autojump
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.txtfasd, z, z.lua, zsh-z
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/.zZLocation
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
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 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,
| 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 |

