21 KiB
		
	
	
	
	
	
			
		
		
	
	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<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. LinuxThe recommended way to install zoxide is via the install script: curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bashOr, 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 Linuxbrew brew install zoxideAlpine Linux 3.13+ Alpine Linux Packages apk add zoxideArch Linux Arch Linux Community pacman -S zoxideCentOS 7+ Copr dnf copr enable atim/zoxide
 dnf install zoxideDebian 11+1 Debian Packages apt install zoxideDevuan 4.0+1 Devuan Packages apt install zoxideFedora 32+ Fedora Packages dnf install zoxideGentoo GURU Overlay eselect repository enable guru
 emerge --sync guru
 emerge app-shells/zoxideManjaro pacman -S zoxideNixOS 21.05+ nixpkgs nix-env -iA nixpkgs.zoxideopenSUSE Tumbleweed openSUSE Factory zypper install zoxideParrot OS1 apt install zoxideRaspbian 11+1 Raspbian Packages apt install zoxideSlackware 15.0+ [SlackBuilds] Instructions Ubuntu 21.04+1 Ubuntu Packages apt install zoxideVoid Linux Void Linux Packages xbps-install -S zoxidemacOSTo 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 zoxideOr, run this command in your terminal: curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bashWindowsThe recommended way to install zoxide is via winget:winget install 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, use the install script instead: curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bashBSDTo 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 zoxideAndroidTo install zoxide, use a package manager: Repository Instructions Termux pkg install zoxide
- 
Setup zoxide on your shell To start using zoxide, add it to your shell. BashAdd this to the end of your config file (usually ~/.bashrc):eval "$(zoxide init bash)"ElvishAdd 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. FishAdd this to the end of your config file (usually ~/.config/fish/config.fish):zoxide init fish | sourceNushellAdd this to the end of your env file (find it by running $nu.env-pathin Nushell):zoxide init nushell | save -f ~/.zoxide.nuNow, add this to the end of your config file (find it by running $nu.config-pathin Nushell):source ~/.zoxide.nuNote zoxide only supports Nushell v0.73.0 and above. PowerShellAdd this to the end of your config file (find it by running echo $profilein PowerShell):Invoke-Expression (& { (zoxide init powershell | Out-String) })XonshAdd this to the end of your config file (usually ~/.xonshrc):execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')ZshAdd 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 shellAdd 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 zoxide only supports fzf v0.33.0 and above. 
- 
Import your data (optional) If you currently use any of these plugins, you may want to import your data into zoxide: autojumpRun 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-zRun 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/.zZLocationRun 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 the- cdcommand (doesn't work on Nushell / POSIX shells).
 
- Changes the prefix of the 
- --hook <HOOK>- Changes how often zoxide increments a directory's score:
Hook Description noneNever promptAt every shell prompt pwdWhenever the directory is changed 
 
- Changes how often zoxide increments a directory's score:
- --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 | 
|---|---|---|
| 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 | 
| telescope.nvim | Fuzzy finder for Neovim | telescope-zoxide | 
| t | tmuxsession manager | Natively supported | 
| tmux-session-wizard | tmuxsession manager | Natively supported | 
| vim / neovim | Text editor | zoxide.vim | 
| xplr | File manager | zoxide.xplr | 
| xxh | Transports shell configuration over SSH | xxh-plugin-prerun-zoxide | 
| zabb | Finds the shortest possible query for a path | Natively supported | 
| zsh-autocomplete | Realtime completions for zsh | Natively supported | 
