Skip to content
Go to file

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time


Integrate fzf functionality into fish! Includes handy functions to do the following using fzf

  • command tab completion
  • search command history
  • find and cd into sub-directories
  • find and open files

All functions

  • are lazily-loaded to keep shell startup time down
  • have preset but configurable key bindings


With fisher

fisher add jethrokuan/fzf

With oh-my-fish

omf install


About the fzf binary

This package will fail if the fzf binary is not detected in your PATH.

See the fzf documentation for instructions to install fzf on your system.


Legacy New Keybindings Remarks
Ctrl-t Ctrl-o Find a file.
Ctrl-r Ctrl-r Search through command history.
Alt-c Alt-c cd into sub-directories (recursively searched).
Alt-Shift-c Alt-Shift-c cd into sub-directories, including hidden ones.
Ctrl-o Alt-o Open a file/dir using default editor ($EDITOR)
Ctrl-g Alt-Shift-o Open a file/dir using xdg-open or open command

Legacy keybindings are kept by default, but these have conflict with keybindings in fish 2.4.0. If you want to use the new keybindings, enter the following into your terminal:


You can disable default keybindings altogether by running:


NOTE: On OS X, Alt-c (Option-c) types Γ§ by default. In iTerm2, you can send the right escape sequence with Esc-c. If you configure the option key to act as +Esc (iTerm2 Preferences > Profiles > Default > Keys > Left option (βŒ₯) acts as: > +Esc), then alt-c will work for fzf as documented.


Variable Remarks Example
FZF_FIND_FILE_COMMAND Modify the command used to generate the list of files set -U FZF_FIND_FILE_COMMAND "ag -l --hidden --ignore .git . \$dir 2> /dev/null" or set -U FZF_FIND_FILE_COMMAND "fd --type f . \$dir" ($dir represents the directory being completed)
FZF_CD_COMMAND Similar to ^ Similar to ^
FZF_CD_WITH_HIDDEN_COMMAND Similar to ^ Similar to ^
FZF_OPEN_COMMAND Similar to ^ Similar to ^
FZF_PREVIEW_FILE_CMD Modify the command used to generate preview of files. set -U FZF_PREVIEW_FILE_CMD "head -n 10"
FZF_PREVIEW_DIR_CMD Modify the command used to generate preview of directories. set -U FZF_PREVIEW_DIR_CMD "ls"


Variable Remarks Example
FZF_DEFAULT_OPTS Default options passed to every fzf command set -U FZF_DEFAULT_OPTS "--height 40"
FZF_FIND_FILE_OPTS Pass in additional arguments to the fzf command for find file set -U FZF_FIND_FILE_OPTS "--reverse --inline-info"
FZF_CD_OPTS Similar to ^ Similar to ^
FZF_CD_WITH_HIDDEN_OPTS Similar to ^ Similar to ^
FZF_REVERSE_ISEARCH_OPTS Similar to ^ Similar to ^
FZF_OPEN_OPTS Similar to ^ Similar to ^
FZF_COMPLETE_OPTS Similar to ^ Similar to ^
FZF_TMUX Runs a tmux-friendly version of fzf instead. set -U FZF_TMUX 1
FZF_ENABLE_OPEN_PREVIEW Enable preview window open command. set -U FZF_ENABLE_OPEN_PREVIEW 1

FZF Tab Completions

This package ships with a fzf widget for fancy tab completions. Please see the wiki page for details.


  • fzf-fish-integration is a newer fzf plugin with very similar features. It lacks Tmux support and fzf tab completion but includes functions for searching git log and browsing shell variables using fzf. Additionally, it is more likely to be maintained going forward. You can read more about the differences between it and this plugin in the readme of fzf-fish-integration here.
  • The fzf utility ships with its own out-of-the-box fish integration. What sets this package apart is that it has a couple more integrations, most notably tab completion. They are not compatible so use one or the other.


fzf is MIT licensed. See the LICENSE for details.

You can’t perform that action at this time.