Supercharge your shell with fzf integration for command history, process management, file previews, and directory jumping. Stop typing, start searching.
fzf turns any list into a fuzzy-searchable interface. Pipe anything into it — files, git branches, command history — and filter interactively.
By the end of this 10 min guide, you'll have a working fzf setup and practical fzf workflows you can use immediately.
Install fzf:
brew install fzffzf --version or fzf -V after installing.Enable shell keybindings so fzf works everywhere. Set FZF_DEFAULT_COMMAND to use ripgrep for file listing (faster, respects .gitignore).
Here's a foundational configuration to start with:
# Shell integration
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export FZF_DEFAULT_COMMAND="rg --files --hidden"
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"With fzf configured, these fzf-specific workflows will save you time every day:
Ctrl-T fuzzy-find files from any directoryCtrl-R search command historyAlt-C fuzzy cd into subdirectoriesfzf for filteringOnce you're comfortable with fzf basics, these advanced techniques will transform your fzf workflow:
--preview with bat for syntax-highlighted previews--expect to map custom keys per actiongit log --oneline | fzfHere are the most common fzf issues and how to fix them:
$(brew --prefix)/opt/fzf/installbrew install batrg --files instead of find--hidden to FZF_DEFAULT_COMMANDCongratulations — you now have a solid fzf foundation. Here's where to go next: