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-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:
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 . \$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 |
This package ships with a fzf
widget for fancy tab completions.
Please see the wiki
page for details.
fzf is MIT licensed. See the LICENSE for details.