fzf + zoxide is the combo

Both tools are well-known. Running them together is the thing I don't see written up often enough.

zoxide learns which directories you visit frequently and lets you jump to them with partial names. z proj instead of cd ~/dev/client/projects/current. fzf gives you a fuzzy finder you can wire to anything — files, command history, git branches, process list.

~/.zshrc
# zoxide init replaces cd
eval "$(zoxide init zsh)"
# zi = interactive mode (uses fzf)
# this is the killer feature
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

# fzf for branch switching
alias gb='git checkout $(git branch | fzf)'

zi is the command to remember. It opens fzf with your zoxide directory history — frecency ranked, fuzzy filtered. You type a fragment of a directory name and hit enter. That's it. Navigation that used to require remembering full paths now requires remembering fragments.

The gb alias at the bottom — fzf over git branches — is something I added after getting comfortable with the directory workflow. The pattern is the same: fuzzy select from a list of things you already have.