📈 GH Trending Explorer 🎲 Surprise me

← all repos

junegunn / fzf.vim

git clone https://github.com/junegunn/fzf.vim.git 🔥 on GitHub Trending today

fzf :heart: vim

+0
stars, 24h · #15,438
+~0
stars, 7 days · #15,960
+18
stars, 30 days · #22,153
10k
★ total
606
forks · 351 open issues

Star history (as recorded here)

2026-10-20 · 10,267 ★ 2026-10-22 · 10,266 ★
LanguageVim Script
LicenseMIT
Created2015-08-14 (11y ago)
Last push22d ago
Watchers72
OwnerUser

Seen on GitHub Trending

  • 2026-10-22 — #5 monthly in vim-script · +17 ★
  • 2026-10-21 — #5 monthly in vim-script · +18 ★
  • 2026-10-20 — #5 monthly in vim-script · +18 ★

GitHub topics

Links

README excerpt
fzf :heart: vim
===============
Things you can do with [fzf][fzf] and Vim.
Rationale
---------
[fzf][fzf] itself is not a Vim plugin, and the official repository only
provides the [basic wrapper function][run] for Vim. It's up to the users to
write their own Vim commands with it. However, I've learned that many users of
fzf are not familiar with Vimscript and are looking for the "default"
implementation of the features they can find in the alternative Vim plugins.
Why you should use fzf on Vim
-----------------------------
Because you can and you love fzf.
fzf runs asynchronously and can be orders of magnitude faster than similar Vim
plugins. However, the benefit may not be noticeable if the size of the input
is small, which is the case for many of the commands provided here.
Nevertheless I wrote them anyway since it's really easy to implement custom
selector with fzf.
Installation
------------
fzf.vim depends on the basic Vim plugin of [the main fzf
repository][fzf-main], which means you need to **set up both "fzf" and
"fzf.vim" on Vim**. To learn more about fzf/Vim integration, see
[README-VIM][README-VIM].
[fzf-main]: https://github.com/junegunn/fzf
[README-VIM]: https://github.com/junegunn/fzf/blob/master/README-VIM.md
### Using vim-plug
 [code] 
`fzf#install()` makes sure that you have the latest binary, but it's optional,
so you can omit it if you use a plugin manager that doesn't support hooks.
### Dependencies
- [fzf][fzf-main] 0.54.0 or above
- For syntax-highlighted preview, install bat
- If delta is available, `GF?`,
 `Commits` and `BCommits` will use it to format `git diff` output.
- `Ag` requires [The Silver Searcher (ag)][ag]
- `Rg` requires [ripgrep (rg)][rg]
- `Tags` and `Helptags` require Perl
- `Tags PREFIX` requires `readtags` command from Universal Ctags
 [code] 
Commands
--------
| Command | List |
| --- | --- |
| `:Files [PATH]` | Files (runs `$FZF_DEFAULT_COMMAND` if defined) |
| `:GFiles [OPTS]` | Git files (`git ls-files`) |
| `:GFiles?` | Git files (`git status`) |
| `:Buffers` | Open buffers |
| `:Colors` | Color schemes |
| `:Ag [PATTERN]` | [ag][ag] search result (`ALT-A` to select all, `ALT-D` to deselect all) |
| `:Rg [PATTERN]` | [rg][rg] search result (`ALT-A` to select all, `ALT-D` to deselect all) |
| `:RG [PATTERN]` | [rg][rg] search result; relaunch ripgrep on every keystroke |
| `:Lines [QUERY]` | Lines in loaded buffers |
| `:BLines [QUERY]` | Lines in the current buffer |
| `:Tags [PREFIX]` | Tags in the project (`ctags -R`) |
| `:BTags [QUERY]` | Tags in the current buffer |
| `:Changes` | Changelist across all open buffers |
| `:Marks` | Marks |
| `:BMarks` | Marks in the current buffer |
| `:Jumps` | Jumps |
| `:Windows` | Windows |
| `:Locate PATTERN` | `locate` command output |
| `:History` | `v:oldfiles` and open buffers |
| `:History:` | Command history |
| `:History/` | Search history |
| `:Snippets` | Snippets ([UltiSnips][us]) |
| `:Commits [LOG_OPTS]` | Git commits (requires [fugitive.vim][f]) |