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
Heavily adapted from @hauleth's PR.
Note that the fzf
utility has its own out-of-the-box fish package. What sets this package apart is that it has a couple more integrations, most notably tab completion, and will probably be updated more frequently. They are not compatible so either use one or the other.
With fisher
fisher add jethrokuan/fzf
With oh-my-fish
omf install https://github.com/jethrokuan/fzf
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-s | Find a file. |
Ctrl-r | Ctrl-r | Search through command history. |
Alt-c | Alt-o | cd into sub-directories (recursively searched). |
Alt-Shift-c | Alt-Shift-o | cd into sub-directories, including hidden ones. |
Ctrl-o | Ctrl-o | Open a file/dir using default editor ($EDITOR) |
Ctrl-g | Ctrl-g | 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:
set -U FZF_LEGACY_KEYBINDINGS 0
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" |
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_COMMAND |
Modify the command used to generate preview of files. | set -U FZF_PREVIEW_FILE_COMMAND "head -n 10" |
FZF_PREVIEW_DIR_COMMAND |
Modify the command used to generate preview of directories. | set -U FZF_PREVIEW_FILE_COMMAND "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_TMUX |
Runs a tmux-friendly version of fzf instead. | set -U FZF_TMUX 1 |
FZF_COMPLETE |
Enable fzf for fish tab completion. | set -U FZF_COMPLETE 1 |
FZF_ENABLE_OPEN_PREVIEW |
Enable preview window open command. | set -U FZF_ENABLE_OPEN_PREVIEW 1 |
fzf is MIT licensed. See the LICENSE for details.