A general-purpose command-line fuzzy finder for interactive filtering of lists like files, history, processes, and git commits.
fzf is an interactive Unix filter program that implements fuzzy matching, allowing users to quickly search through any kind of list—such as files, command history, processes, hostnames, bookmarks, and git commits—by typing patterns with omitted characters. It enhances command-line productivity by providing a fast, versatile, and portable interface that integrates seamlessly with shells and editors.
Command-line users and developers working in Unix-like environments (including macOS, Linux, and Windows via compatibility layers) who frequently need to search and filter lists of items such as files, processes, or command history. It is particularly valuable for system administrators, DevOps engineers, and power users who use shells like Bash, Zsh, or Fish, and editors like Vim or Neovim.
Developers choose fzf over alternatives because it is a single, portable binary that is extremely fast, even with millions of items, and offers deep, customizable integration with shells and editors out of the box. Its unique selling point is its general-purpose fuzzy matching algorithm combined with features like a preview window, dynamic reloading of candidate lists, and extensive key binding customization, which together provide a highly efficient and flexible filtering tool for diverse data sources.
:cherry_blossom: A command-line fuzzy finder
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Optimized to process millions of items instantly with efficient algorithms, making it ideal for large datasets like full file systems or extensive command histories, as highlighted in the Performance section.
Comes with built-in key bindings and fuzzy completion for Bash, Zsh, and Fish out of the box, enhancing command-line productivity without requiring additional plugins or complex setup.
Offers extensive customization through event-action bindings, display modes (e.g., --height, --tmux), and style presets, allowing users to tailor the look and behavior to specific workflows.
Supports preview windows for content using external tools like bat for syntax highlighting or custom scripts, including image previews via protocols like Kitty graphics or Sixel, as detailed in the Preview window section.
Using advanced options like --ansi, --nth, or regex delimiters can significantly slow down fzf, requiring careful tuning to maintain speed, as warned in the Performance section of the README.
As a general-purpose text filter, adding preview options to default settings (e.g., in FZF_DEFAULT_OPTS) can break with non-file inputs like process lists or command history, a limitation explicitly noted in the README.
Shell integration is optimized for Bash, Zsh, and Fish; setting up fzf with other shells or environments (e.g., Windows PowerShell) often requires manual configuration and lacks native key binding support.