If you spend a significant amount of time in the terminal, you know how frustrating it can be to locate files, commands, directories, or even Git branches quickly. I used to rely heavily on find, grep, command history, and manual navigation. It worked—but it was slow and inefficient.
Everything changed when I discovered fzf.
Today, fzf is one of the most essential tools in my daily workflow on both macOS and Linux. It dramatically improves how fast I find things and interact with the terminal.
In this post, I’ll explain what fzf is, how to install and configure it, and most importantly, how I use it in real-world scenarios to boost productivity.
fzf is a general-purpose command-line fuzzy finder that allows you to search and filter lists interactively in the terminal.
Unlike traditional search tools that require exact matches, fzf uses fuzzy matching, meaning you only need to type part of the name—even out of order—and it will find the correct result.
For example, instead of typing: application_config_backup.txt You can simply type: acb and fzf will locate it instantly.
fzf works with anything:
It reads input, filters it interactively, and outputs your selection, making it extremely flexible.
Here’s why fzf is so powerful:
fzf transforms slow terminal workflows into fast, interactive operations.
If you use Homebrew:
brew install fzf
Then enable key bindings and completion:
$(brew --prefix)/opt/fzf/install

sudo apt install fzf
sudo dnf install fzf
sudo pacman -S fzf
fzf is available in most package managers because it’s lightweight and cross-platform.
This step unlocks the real power of fzf.
Add this to your ~/.bashrc or ~/.zshrc:
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
Optional but highly recommended (faster search using fd):
export FZF_DEFAULT_COMMAND="fd --type f"
This replaces slow find with faster search tools.
Reload:
source ~/.bashrc
Here’s how I use fzf daily.
Before fzf:
find . -name "*config*"
Now:
fzf
or open directly:
vim $(fzf)
This saves massive time when working with large projects.

Press:
CTRL + R
Then type part of any previous command. fzf instantly filters and lets you execute it. This eliminates retyping long commands.
Example:
docker run ...
kubectl apply ...
ssh root@192.168.10.22

All instantly searchable.
Press:
ALT + C / ⌥ + C
fzf shows all directories and lets you jump instantly.
This is far faster than:
cd project/folder/subfolder/example/
Type:
vim **
Press TAB.
fzf opens an interactive file selector.
This works with:
vim **
nano **
code **
cat **

Find branches:
git branch | fzf
Switch branch:
git checkout $(git branch | fzf)
Find commits:
git log | fzf

Instead of:
ps aux | grep python
kill -9 1234
Use:
ps -ef | fzf
Or:
kill -9 $(ps -ef | fzf | awk '{print $2}')
fzf makes process management simple.

env | fzf

This is extremely useful for debugging.
Instead of typing full hostname:
ssh **
Press TAB and select.

Perfect when managing many servers.
Example:
rg --line-number . | fzf
Select file → open instantly.

This is incredibly useful for developers.
fzf can turn scripts into interactive tools.
Example:
#!/bin/bash
file=$(ls | fzf)
vim "$file"
This creates an interactive file picker.
Install these tools for best experience:
brew install fzf fd ripgrep bat
Then configure preview:
export FZF_DEFAULT_OPTS="--height 40% \
--layout=reverse \
--border \
--preview 'bat --style=numbers --color=always {}' \
--preview-window=right:60%"

This shows file preview while browsing.

fzf dramatically improves:
Tasks that took minutes now take seconds.
Before fzf:
After fzf:
fzf is now one of the first tools I install on every system.
fzf is one of the most powerful terminal productivity tools available today. It is fast, flexible, and integrates seamlessly into almost any workflow. If you use the terminal regularly on macOS or Linux, installing fzf is one of the best productivity upgrades you can make. Once you start using it, you won’t want to work without it.