zoxide Ajeet D'Souza
winget install --id=ajeetdsouza.zoxide -e
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.
zoxide is a smarter cd
command designed to enhance directory navigation by remembering frequently accessed directories. It allows users to "jump" to these directories with minimal keystrokes, significantly improving workflow efficiency.
Key Features:
- Smart Directory Remembering: Tracks and prioritizes directories based on usage frequency.
- Cross-Shell Compatibility: Works seamlessly across all major shells, including Bash, Fish, Zsh, PowerShell, and more.
- Fuzzy Matching: Enables quick navigation to directories with partial matches or patterns.
- Interactive Selection with fzf (Optional): Provides an interactive interface for selecting directories using the popular fuzzy finder tool.
- Tab Completions: Supports intelligent tab completions for enhanced usability.
Audience & Benefit: Ideal for developers, system administrators, and anyone working in terminal environments who need to navigate complex directory structures. By reducing the time spent on repetitive navigation tasks, zoxide enhances productivity and streamlines workflows.
zoxide can be installed via winget on Windows, making it accessible across multiple platforms.
README
Special thanks to:

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. zoxide works on all major shells.
Getting started • Installation • Configuration • Integrations
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 # 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.
Linux / WSL
> The recommended way to install zoxide is via the install script: > >
sh > curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh >
> > Or, you can use a package manager: > > | Distribution | Repository | Instructions | > | ------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------- | > | Any | crates.io |cargo install zoxide --locked
| > | Any | asdf |asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git
asdf install zoxide latest
| > | 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
| > | AlmaLinux | |dnf install zoxide
| > | Alpine Linux 3.13+ | Alpine Linux Packages |apk add zoxide
| > | Arch Linux | Arch Linux Extra |pacman -S zoxide
| > | CentOS Stream | |dnf install zoxide
| > |Debian 11+1 |Debian Packages|| > | Devuan 4.0+ | Devuan Packages |apt install zoxide
apt install zoxide
| > | Exherbo Linux | Exherbo packages |cave resolve -x repository/rust
cave resolve -x zoxide
| > | Fedora 32+ | Fedora Packages |dnf install zoxide
| > | Gentoo | Gentoo Packages |emerge app-shells/zoxide
| > | Linux Mint | apt.cli.rs (unofficial) | Setup the repository, thenapt install zoxide
| > | Manjaro | |pacman -S zoxide
| > | openSUSE Tumbleweed | openSUSE Factory |zypper install zoxide
| > |Parrot OS1 | || > |apt install zoxide
Raspbian 11+1 |Raspbian Packages|| > | RHEL 8+ | |apt install zoxide
dnf install zoxide
| > | Rhino Linux | Pacstall Packages |pacstall -I zoxide-deb
| > | Rocky Linux | |dnf install zoxide
| > | Slackware 15.0+ | SlackBuilds | Instructions | > | Solus | Solus Packages |eopkg install zoxide
| > | Ubuntu | apt.cli.rs (unofficial) | Setup the repository, thenapt install zoxide
| > | Void Linux | Void Linux Packages |xbps-install -S zoxide
|macOS
> To install zoxide, use a package manager: > > | Repository | Instructions | > | --------------- | ----------------------------------------------------------------------------------------------------- | > | crates.io |
cargo install zoxide --locked
| > | Homebrew |brew install zoxide
| > | asdf |asdf plugin add zoxide https://github.com/nyrst/asdf-zoxide.git
asdf install zoxide latest
| > | 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: > >sh > curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh >
Windows
> zoxide works with PowerShell, as well as shells running in Cygwin, Git > Bash, and MSYS2. > > The recommended way to install zoxide is via
winget
: > >sh > winget install ajeetdsouza.zoxide >
> > Or, you can use an alternative package manager: > > | Repository | Instructions | > | --------------- | ------------------------------------- | > | crates.io |cargo install zoxide --locked
| > | Chocolatey |choco install zoxide
| > | conda-forge |conda install -c conda-forge zoxide
| > | Scoop |scoop install zoxide
| > > If you're using Cygwin, Git Bash, or MSYS2, you can also use the install script: > >sh > curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh >
BSD
> To install zoxide, use a package manager: > > | Distribution | Repository | Instructions | > | ------------- | --------------- | ------------------------------- | > | Any | crates.io |
cargo install zoxide --locked
| > | DragonFly BSD | DPorts |pkg install zoxide
| > | FreeBSD | FreshPorts |pkg install zoxide
| > | NetBSD | pkgsrc |pkgin install zoxide
| > > Or, run this command in your terminal: > >sh > curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash >
Android
> To install zoxide, use a package manager: > > | Repository | Instructions | > | ---------- | -------------------- | > | Termux |
pkg install zoxide
| > > Or, run this command in your terminal: > >sh > 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
): > >sh > eval "$(zoxide init bash)" >
Elvish
> Add this to the end of your config file (usually
~/.elvish/rc.elv
): > >sh > 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
): > >sh > zoxide init fish | source >
Nushell
> Add this to the end of your env file (find it by running
$nu.env-path
> in Nushell): > >sh > zoxide init nushell | save -f ~/.zoxide.nu >
> > Now, add this to the end of your config file (find it by running >$nu.config-path
in Nushell): > >sh > 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 $profile
in PowerShell): > >powershell > Invoke-Expression (& { (zoxide init powershell | Out-String) }) >
Tcsh
> Add this to the end of your config file (usually
~/.tcshrc
): > >sh > zoxide init tcsh > ~/.zoxide.tcsh > source ~/.zoxide.tcsh >
Xonsh
> Add this to the end of your config file (usually
~/.xonshrc
): > >python > execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide') >
Zsh
> Add this to the end of your config file (usually
~/.zshrc
): > >sh > eval "$(zoxide init zsh)" >
> > For completions to work, the above line must be added aftercompinit
is > called. You may have to rebuild your completions cache by running >rm ~/.zcompdump*; compinit
.Any POSIX shell
> Add this to the end of your config file: > >
sh > 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: > >
sh > 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.txt
or$HOME/.local/share/autojump/autojump.txt
|/home/alice/.local/share/autojump/autojump.txt
| > | macOS |$HOME/Library/autojump/autojump.txt
|/Users/Alice/Library/autojump/autojump.txt
| > | Windows |%APPDATA%\autojump\autojump.txt
|C:\Users\Alice\AppData\Roaming\autojump\autojump.txt
|fasd, z, z.lua, zsh-z
> Run this command in your terminal: > >
sh > zoxide import --from=z "path/to/z/db" >
> > The path usually varies according to your system: > > | Plugin | Path | > | ---------------- | ----------------------------------------------------------------------------------- | > | fasd |$_FASD_DATA
or$HOME/.fasd
| > | z (bash/zsh) |$_Z_DATA
or$HOME/.z
| > | z (fish) |$Z_DATA
or$XDG_DATA_HOME/z/data
or$HOME/.local/share/z/data
| > | z.lua (bash/zsh) |$_ZL_DATA
or$HOME/.zlua
| > | z.lua (fish) |$XDG_DATA_HOME/zlua/zlua.txt
or$HOME/.local/share/zlua/zlua.txt
or$_ZL_DATA
| > | zsh-z |$ZSHZ_DATA
or$_Z_DATA
or$HOME/.z
|ZLocation
> 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 >
Configuration
Flags
When calling zoxide init
, the following flags are available:
-
--cmd
- Changes the prefix of the
z
andzi
commands. --cmd j
would change the commands to (j
,ji
).--cmd cd
would replace thecd
command.
- Changes the prefix of the
-
--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
- Prevents zoxide from defining the
z
andzi
commands. - These functions will still be available in your shell as
__zoxide_z
and__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_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
- When set to 1,
z
will 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,
z
will 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 |
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 |