explaingit

junegunn/fzf

🔥 Hot80,018GoAudience · developerComplexity · 2/5ActiveLicenseSetup · easy

TLDR

A command-line fuzzy finder that lets you quickly filter any list by typing an imprecise pattern. Works with files, history, processes, and more.

Mindmap

mindmap
  root((fzf))
    What it does
      Fuzzy filter lists
      Interactive search
      Instant matching
    How to use
      Terminal workflows
      File selection
      Command history
      Process picking
    Installation
      Homebrew
      Linux package managers
      Windows installers
      Git clone
    Integrations
      Bash and Zsh
      Fish shell
      Vim and Neovim
    Customization
      Key bindings
      Event actions
      Fuzzy matching tuning

Things people build with this

USE CASE 1

Quickly open files from a directory by typing partial names instead of full paths.

USE CASE 2

Jump to directories in your shell history without remembering exact folder names.

USE CASE 3

Search and re-run commands from your shell history by typing keywords.

USE CASE 4

Select a running process to kill or inspect by filtering the process list.

Tech stack

GoBashZshFishVimNeovim

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

fzf is a command-line fuzzy finder. The short version: you give it a list of things, files in a folder, your shell command history, running processes, hostnames, bookmarks, git commits, anything that comes one item per line, and it pops up an interactive prompt where you type a few characters and it filters the list as you go. The matching is fuzzy, which means the characters you type only need to appear in order somewhere in the candidate, not as a contiguous block, so typing fbar can find foo_bar_baz. Press enter and the selected line is returned to whatever you piped fzf into. That last point is the whole design idea: fzf is built to be glued together with other Unix tools. It takes input on standard input and prints the chosen item on standard output, so any list-producing command can become an interactive picker. There is also a preview window that runs a command on each candidate as you scroll, so you can, for example, preview the contents of a file before opening it. Search syntax supports exact-match anchors and negation as well as fuzzy, and key bindings can be reconfigured through an event-action system. People reach for fzf to jump to files inside large repos, to pull a previous command out of shell history, to switch between processes, to choose a git commit to check out, and as a building block in their own shell scripts. It is distributed as a single Go binary, runs on macOS, Linux, the BSDs, and Windows through many package managers, and ships with optional shell integration for Bash, Zsh, and Fish and plugins for Vim and Neovim. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Show me how to set up fzf with my Bash shell so I can use Ctrl+R to search my command history.
Prompt 2
How do I use fzf to quickly find and open files in Vim by typing partial filenames?
Prompt 3
Give me an example of binding a custom key in fzf to preview file contents while searching.
Prompt 4
How can I integrate fzf into my Zsh config to enable fuzzy completion for directory navigation?
Prompt 5
Show me how to use fzf to select from a list of git branches and check out the one I pick.
Open on GitHub → Explain another repo

Generated 2026-05-21 · Model: sonnet-4-6 · Verify against the repo before relying on details.