fzf
:cherry_blossom: A command-line fuzzy finder
File Explorer
- issue_template.yml
- codeql-analysis.yml
- depsreview.yaml
- labeler.yml
- linux.yml
- macos.yml
- release.yml
- typos.yml
- winget.yml
- CODEOWNERS
- dependabot.yml
- FUNDING.yml
- labeler.yml
- PULL_REQUEST_TEMPLATE.md
- fzf-preview.sh
- fzf-tmux
- fzf.txt
- fzf-tmux.1
- fzf.1
- fzf.vim
- common.sh
- completion-examples.nu
- completion.bash
- completion.fish
- completion.nu
- completion.zsh
- key-bindings.bash
- key-bindings.fish
- key-bindings.nu
- key-bindings.zsh
- update.sh
- algo.go
- algo_test.go
- fastpath_equiv_test.go
- indexbyte2_amd64.go
- indexbyte2_amd64.s
- indexbyte2_arm64.go
- indexbyte2_arm64.s
- indexbyte2_other.go
- indexbyte2_test.go
- normalize.go
- runeindex_others.go
- runeindex_ref.go
- runeindex_x86.go
- runeprefilter_test.go
- SIMD.md
- protector.go
- protector_openbsd.go
- dummy.go
- eventtype_string.go
- light.go
- light_query_test.go
- light_test.go
- light_unix.go
- light_windows.go
- tcell.go
- tcell_test.go
- ttyname_unix.go
- ttyname_windows.go
- tui.go
- tui_test.go
- atexit.go
- atexit_test.go
- atomicbool.go
- atomicbool_test.go
- chars.go
- chars_test.go
- concurrent_set.go
- eventbox.go
- eventbox_test.go
- slab.go
- util.go
- util_test.go
- util_unix.go
- util_windows.go
- actiontype_string.go
- ansi.go
- ansi_test.go
- cache.go
- cache_test.go
- chunklist.go
- chunklist_test.go
- constants.go
- core.go
- functions.go
- history.go
- history_test.go
- item.go
- item_test.go
- LICENSE
- matcher.go
- merger.go
- merger_test.go
- options.go
- options_no_pprof.go
- options_pprof.go
- options_pprof_test.go
- options_test.go
- pattern.go
- pattern_test.go
- proxy.go
- proxy_test.go
- proxy_unix.go
- proxy_windows.go
- reader.go
- reader_test.go
- result.go
- result_others.go
- result_test.go
- result_x86.go
- server.go
- terminal.go
- terminal_test.go
- terminal_unix.go
- terminal_windows.go
- tmux.go
- tmux_test.go
- tokenizer.go
- tokenizer_test.go
- winpty.go
- winpty_windows.go
- zellij.go
- common.fish
- common.rb
- common.sh
- fzf.vader
- runner.rb
- test_core.rb
- test_exec.rb
- test_filter.rb
- test_layout.rb
- test_preview.rb
- test_raw.rb
- test_server.rb
- test_shell_integration.rb
- test_tmux.rb
- .editorconfig
- .gitignore
- .goreleaser.yml
- .rubocop.yml
- .tool-versions
- ADVANCED.md
- BUILD.md
- CHANGELOG.md
- Dockerfile
- Gemfile
- Gemfile.lock
- go.mod
- go.sum
- install
- install.ps1
- LICENSE
- main.go
- Makefile
- README-VIM.md
- README.md
- RELEASE.md
- SECURITY.md
- typos.toml
- uninstall
# Installation Guide
goSetup Steps
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
Clone the repository to local path.
~/.fzf/install
Run the install script to set up binaries and shell integration.
Key Commands
brew install fzf
Install fzf using Homebrew.
fzf
Run the fzf fuzzy finder in the terminal.
# Use via CDN
jsDelivrjsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.
Release Timeline
Actively MaintainedCommand Glossary
Commands referenced in this DOCs, explained below.
pkg
View Details ▼
pkg
Package management utility for Termux.
pkg {{[up|upgrade]}}
Upgrade all installed packages:
pkg install {{package}}
Install a new package:
tldr pkg_add
View documentation for installing/updating packages:
dir
View Details ▼
dir
List files.
dir
List files in the current working directory:
tldr ls
View documentation for the original command:
dir
Show the contents of the current directory:
line
View Details ▼
line
Manage lines.
Accessed in configuration mode.
line vty 0 15
Configure lines from 0 to 15:
line
Read input:
awk
View Details ▼
awk
A versatile programming language for working on files.
Note: Different implementations of AWK often make this a symlink of their binary.
See also: `gawk`.
awk '{print $5}' {{path/to/file}}
Print the fifth column (a.k.a. field) in a space-separated file:
awk '/{{foo}}/ {print $2}' {{path/to/file}}
Print the second column of the lines containing "foo" in a space-separated file:
awk -F ',' '{print $NF}' {{path/to/file}}
Print the last column of each line in a file, using a comma (instead of space) as a field separator:
brew install
View Details ▼
brew install
Install a Homebrew formula or cask.
brew install {{formula|cask}}
Install a formula/cask:
brew install {{[-s|--build-from-source]}} {{formula}}
Build and install a formula from source (dependencies will still be installed from bottles):
brew install {{[-n|--dry-run]}} {{formula|cask}}
Download the manifest, print what would be installed but don't actually install anything:
brew update
View Details ▼
brew update
Fetch the newest version of Homebrew and all formulae from GitHub using `git` and perform any necessary migrations.
To upgrade all installed formulae, use `brew upgrade`.
brew {{[up|update]}}
Fetch the newest version of Homebrew and all formulae:
complete
View Details ▼
complete
Get and set argument autocompletion rules of shell commands in Bash.
The specified completions will be invoked when `<Tab>` is pressed in Bash.
See also: `compgen`, `compopt`.
complete -F {{function}} {{command}}
Set arguments of a command to autocomplete through a function (completion response is sent in `$COMPREPLY` variable):
complete -C {{autocomplete_command}} {{command}}
Set arguments of a command to autocomplete through another command (`$1` is the command, `$2` is the argument the cursor is on, and `$3` is the argument preceding the cursor):
complete -b {{command}}
Set arguments of a command to autocomplete to shell builtins:
conda install
View Details ▼
conda install
Install packages into an existing conda environment.
conda install {{package1 package2 ...}}
Install one or more package into the currently active conda environment:
conda install {{[-c|--channel]}} conda-forge {{package}}
Install a single package into the currently active conda environment using channel conda-forge:
conda install {{[-c|--channel]}} conda-forge --override-channels {{package}}
Install a single package into the currently active conda environment using channel conda-forge and ignoring other channels:
esac
View Details ▼
esac
This shell keyword is used to end a `case` statement.
tldr case
View documentation for the `case` keyword:
fish
View Details ▼
fish
The Friendly Interactive SHell, a command-line interpreter designed to be user friendly.
fish
Start an interactive shell session:
fish {{[-N|--no-config]}}
Start an interactive shell session without loading startup configs:
fish {{[-c|--command]}} "{{echo 'fish is executed'}}"
Execute specific commands:
fzf
View Details ▼
fzf
Fuzzy finder.
Similar to `sk`.
find {{path/to/directory}} -type f | fzf
Start `fzf` on all files in the specified directory:
ps aux | fzf
Start `fzf` for running processes:
find {{path/to/directory}} -type f | fzf {{[-m|--multi]}} > {{path/to/file}}
Select multiple files with `<Shift Tab>` and write to a file:
git clone
View Details ▼
git clone
Clone an existing repository.
git clone {{remote_repository_location}} {{path/to/directory}}
Clone an existing repository into a new directory (the default directory is the repository name):
git clone --recursive {{remote_repository_location}}
Clone an existing repository and its submodules:
git clone {{[-n|--no-checkout]}} {{remote_repository_location}}
Clone only the `.git` directory of an existing repository:
git grep
View Details ▼
git grep
Find strings inside tracked files in a repository.
Accepts a lot of the same flags as regular `grep`.
git grep "{{search_string}}"
Search for a string in files in the current `HEAD`:
git grep "{{search_string}}" -- "{{*.ext}}"
Search for a string in files matching a glob pattern in the current `HEAD`:
git grep --recurse-submodules "{{search_string}}"
Search for a string, including submodules:
git log
View Details ▼
git log
Show a history of commits.
git log
Show the sequence of commits starting from the current one, in reverse chronological order of the Git repository in the current working directory:
git log {{[-p|--patch]}} {{path/to/file_or_directory}}
Show the history of a particular file or directory, including differences:
git log --stat
Show an overview of which file(s) changed in each commit:
git ls-files
View Details ▼
git ls-files
Show information about files in the index and the working tree.
git ls-files {{[-d|--deleted]}}
Show deleted files:
git ls-files {{[-m|--modified]}}
Show modified and deleted files:
git ls-files {{[-o|--others]}}
Show ignored and untracked files:
man
View Details ▼
man
Format and display manual pages.
See also: `whatis`, `apropos`.
man {{command}}
Display the man page for a command:
man {{[-H|--html=]}}{{browser_name}} {{command}}
Open the man page for a command in a browser (`=browser_name` can be omitted if `$BROWSER` is set):
man 7 {{command}}
Display the man page for a command from section 7:
mise
View Details ▼
mise
Manage language runtimes like Node.js, Python, Ruby, Go, Java, etc and various tools.
mise plugins list-all
List all available plugins:
mise plugins add {{name}}
Install a plugin:
mise ls-remote {{name}}
List runtime versions available for install:
nix-env
View Details ▼
nix-env
Manipulate or query Nix user environments.
nix-env {{[-q|--query]}}
List all installed packages:
nix-env {{[-q|--query]}} {{search_pattern}}
Query installed packages (`regex` is supported):
nix-env {{[-qa|--query --available]}} {{search_pattern}}
Query available packages from the Nixpkgs registry:
seq
View Details ▼
seq
Output a sequence of numbers to `stdout`.
seq 10
Print a sequence from 1 to 10:
seq 10 20
Print a sequence from 10 to 20:
seq 5 3 20
Print every 3rd number from 5 to 20:
shift
View Details ▼
shift
Move positional parameters.
shift
Remove the first positional parameter:
shift {{n}}
Remove the first `n` positional parameters:
ssh
View Details ▼
ssh
Secure Shell is a protocol used to securely log onto remote systems.
It can be used for logging or executing commands on a remote server.
ssh {{username}}@{{remote_host}}
Connect to a remote server:
ssh {{username}}@{{remote_host}} -i {{path/to/key_file}}
Connect to a remote server with a specific [i]dentity (private key):
ssh {{username}}@10.0.0.1 -p {{2222}}
Connect to a remote server with IP `10.0.0.1` and using a specific [p]ort (Note: `10.0.0.1` can be shortened to `10.1`):
unset
View Details ▼
unset
Remove shell variables or functions.
unset {{variable}}
Remove variable, or if the variable doesn't exist, remove the function of the same name:
unset -v {{variable1 variable2 ...}}
Remove variables:
unset -f {{function_name1 function_name2}}
Remove the function:
vim
View Details ▼
vim
Vim (Vi IMproved), a command-line text editor, provides several modes for different kinds of text manipulation.
Pressing `<i>` in normal mode enters insert mode. Pressing `<Esc>` goes back to normal mode, which enables the use of Vim commands.
See also: `vimdiff`, `vimtutor`, `nvim`, `gvim`.
vim {{path/to/file}}
Open a file:
vim +{{line_number}} {{path/to/file}}
Open a file at a specified line number:
<:>help<Enter>
View Vim's help manual:
xargs
View Details ▼
xargs
Execute a command with piped arguments coming from another command, a file, etc.
The input is treated as a single block of text and split into separate pieces on spaces, tabs, newlines, and end-of-file.
See also: `parallel`.
{{arguments_source}} | xargs {{command}}
Run a command using the input data as arguments:
{{arguments_source}} | xargs sh -c "{{command1}} && {{command2}} | {{command3}}"
Run multiple chained commands on the input data:
{{arguments_source}} | xargs {{[-n|--max-args]}} 1 {{command}}
Execute a new command with each argument:
apk
View Details ▼
apk
Alpine Linux package management tool.
apk upgrade {{[-U|--update-cache]}}
Update repository indexes and upgrade all packages:
apk update
Only update repository indexes:
apk add {{package}}
Install a new package:
apt install
View Details ▼
apt install
Install packages for Debian-based distributions.
sudo apt install {{package}}
Install a package, or update it to the latest version:
sudo apt install {{[-V|--verbose-versions]}} {{package}}
Display verbose package version information during installation or update:
apt
View Details ▼
apt
Package manager for Debian-based distributions.
Intended as a user-friendly alternative to `apt-get` for interactive use.
For equivalent commands in other package managers, see <https://wiki.archlinux.org/title/Pacman/Rosetta>.
sudo apt update
Update the list of available packages and versions (recommended before running other `apt` commands):
apt search {{package}}
Search packages by name or description:
apt list {{package}}
Search packages by name only (supports wildcards like `*`):
dnf install
View Details ▼
dnf install
Install packages on Red Hat-based distributions.
sudo dnf {{[in|install]}} {{package1 package2 ...}}
Install packages by name:
sudo dnf {{[in|install]}} {{path/to/file}}
Install a package from a local file:
sudo dnf {{[in|install]}} {{https://example.com/package.rpm}}
Install a package from the internet:
emerge
View Details ▼
emerge
Gentoo Linux package manager utility.
For equivalent commands in other package managers, see <https://wiki.archlinux.org/title/Pacman/Rosetta>.
sudo emerge --sync
Synchronize all packages:
sudo emerge {{[-avuDN|--ask --verbose --update --deep --newuse]}} @world
Update all packages, including dependencies:
sudo emerge --resume --skipfirst
Resume a failed update, skipping the failing package:
pacman -S
View Details ▼
pacman -S
This command is an alias of `pacman --sync`.
tldr pacman sync
View documentation for the original command:
xbps-install
View Details ▼
xbps-install
XBPS utility to (re)install and update packages.
See also: `xbps`.
xbps-install {{package}}
Install a new package:
xbps-install {{[-Su|--sync --update]}}
Synchronize and update all packages:
zypper
View Details ▼
zypper
SUSE & openSUSE package management utility.
For equivalent commands in other package managers, see <https://wiki.archlinux.org/title/Pacman/Rosetta>.
sudo zypper {{[ref|refresh]}}
Synchronize list of packages and versions available:
sudo zypper {{[in|install]}} {{package}}
Install a new package:
sudo zypper {{[rm|remove]}} {{package}}
Remove a package:
pkgin
View Details ▼
pkgin
Manage `pkgsrc` binary packages on NetBSD.
pkgin install {{package}}
Install a package:
pkgin remove {{package}}
Remove a package and its dependencies:
pkgin full-upgrade
Upgrade all packages:
pkg_add
View Details ▼
pkg_add
Install/update packages in OpenBSD.
See also: `pkg_info`, `pkg_delete`.
pkg_add -u
Update all packages, including dependencies:
pkg_add {{package}}
Install a new package:
pkg_add -l {{path/to/file}}
Install packages from the raw output of `pkg_info`:
choco install
View Details ▼
choco install
Install one or more packages with Chocolatey.
choco install {{package1 package2 ...}}
Install one or more packages:
choco install {{path\to\packages_file.config}}
Install packages from a custom configuration file:
choco install {{path\to\file}}
Install a specific `.nuspec` or `.nupkg` file:
choco upgrade
View Details ▼
choco upgrade
Upgrade one or more packages with Chocolatey.
choco upgrade {{package1 package2 ...}}
Upgrade one or more packages:
choco upgrade {{package}} --version {{version}}
Upgrade to a specific version of a package:
choco upgrade all
Upgrade all packages:
scoop
View Details ▼
scoop
The Scoop package manager.
Some subcommands such as `bucket` have their own usage documentation.
scoop install {{package}}
Install a package:
scoop uninstall {{package}}
Remove a package:
scoop update --all
Update all installed packages:
winget
View Details ▼
winget
Windows Package Manager.
winget {{[add|install]}} {{package}}
Install a package (use `--source` when package is available from multiple sources):
winget {{[rm|uninstall]}} {{package}}
Remove a package (Note: `remove` can also be used instead of `uninstall`):
winget show {{package}}
Display information about a package:
