junegunn /fzf

:cherry_blossom: A command-line fuzzy finder

★ 84,116⑂ 3,430👁 446⑃ 1,221● 3,235▤ 87◈ 393
GoMITCreated 2013-10-23junegunn.github.io/fzf/
TA的项目
84,116
stars
+22+171+750
3,430
forks
446
watchers
1,221
prs
3,235
issues
87
releases
393
discussions

README

---


  
  
  
  
  Show your love for fzf -- T-shirts, mugs, and stickers now available!
  
  
  
  
  


---

fzf is a general-purpose command-line fuzzy finder and an interactive terminal toolkit.



Whether you're selecting files, browsing command history, previewing data,
navigating complex datasets with fuzzy matching, or creating custom menus and
workflows, fzf provides the building blocks to turn shell scripts into rich
terminal applications.

Highlights
----------

- Portable // Distributed as a single binary for easy installation
- Fast // Optimized to process millions of items in milliseconds
- Programmable // Event-driven architecture for building custom terminal interfaces and workflows
- Batteries-included // Comes with integrations for Bash, Zsh, Fish, Nushell, Vim, and Neovim

Table of Contents
-----------------



 Installation
     Using Homebrew
     Using Mise
     Linux packages
     Windows packages
     Using git
     Binary releases
     Setting up shell integration
     Vim/Neovim plugin
 Upgrading fzf
 Building fzf
 Usage
     Using the finder
     Display modes
         --height mode
         --popup mode
     Search syntax
     Environment variables
     Customizing the look
     Options
     Demo
 Examples
 Key bindings for command-line
 Fuzzy completion
     Files and directories
     Process IDs
     Host names
     Environment variables / Aliases
     Customizing fuzzy completion for bash and zsh
         Customizing fzf options for completion
         Customizing completion source for paths and directories
         Supported commands (bash)
         Custom fuzzy completion
     Fuzzy completion for fish
     Fuzzy completion for Nushell
 Vim plugin
 Advanced topics
     Customizing for different types of input
     Performance
     Executing external programs
     Turning into a different process
     Reloading the candidate list
         1. Update the list of processes by pressing CTRL-R
         2. Switch between sources by pressing CTRL-D or CTRL-F
         3. Interactive ripgrep integration
     Preview window
     Previewing an image
 Tips
     Respecting .gitignore
     Fish shell
     fzf Theme Playground
 Related projects
 License
 Goods
 Sponsors :heart:



Installation
------------

 Using Homebrew

You can use Homebrew (on macOS or Linux) to install fzf.

sh
brew install fzf


 [!IMPORTANT]
 To set up shell integration (key bindings and fuzzy completion),
 see the instructions below.

fzf is also available [via MacPorts][portfile]: sudo port install fzf

[portfile]: https://github.com/macports/macports-ports/blob/master/sysutils/fzf/Portfile

 Using Mise

You can use mise to install fzf.

sh
mise use -g fzf@latest


 Linux packages

| Package Manager | Linux Distribution      | Command                            |
| --------------- | ----------------------- | ---------------------------------- |
| APK             | Alpine Linux            | sudo apk add fzf                 |
| APT             | Debian 9

Top issues

Discussions

Latest release

0.75.0 v0.75.0 2026-11-07
- Added {change,transform,bg-transform}-info-command actions (4951) (@casperdcl)
  sh
  seq 100 | fzf --info-command 'echo "mode: A | $FZF_INFO"' \
                --bind 'ctrl-a:change-info-command:echo "mode: A | $FZF_INFO"' \
                --bind 'ctrl-b:change-info-command:echo "mode: B | $FZF_INFO"'
  
- transform-nth and transform-with-nth (and their bg- variants) no longer split the output at |
    - Only change-nth and change-with-nth rotate through |-separated values
    - Fixed the bound command being replaced with the output. e.g. With transform-nth(echo '1|2'), the next key press

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON