Awesome
fzf-zsh-plugin
<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->Table of Contents
<!-- END doctoc generated TOC please keep comment here to allow auto update -->This ZSH plugin enables using fzf to search your command history and do file searches.
It will automagically install fzf
into your home directory if it isn't already there, and bind ^R
to an fzf
-powered search of your command history.
Created for the zsh-quickstart-kit to make the default setup have a more 'batteries included' feel.
Yes, there is a plugin baked into oh-my-zsh, this allows easy fzf
integration for other frameworks and shells, and adds some helper scripts.
Note - while these scripts could all be ZSH functions instead of scripts in the bin
directory, it uses standalone scripts so that non-ZSH users can also use the repository by adding its bin
directory to their $PATH
.
Contents
Name | Description | Author |
---|---|---|
asdf-install | Install one or more versions of the specified language with fzf and installs your selection with asdf | fzf wiki |
asdf-uninstall | Select one or more versions of the specified language with fzf and uninstalls your selection with asdf | fzf wiki |
chrome-bookmark-browser | Rummages through your Chrome bookmarks with fzf and opens the selected bookmark(s) in your default browser | fzf wiki |
d-attach | Uses fzf to select docker containers to start and attach to. | From the fzf wiki |
d-image-rm | Uses fzf to select docker images to remove. | From the fzf wiki |
d-rm | Uses fzf to select docker containers to remove. | From the fzf wiki |
d-stop-container | Stop a Docker container. | ? |
falias | Searches your ZSH aliases, then puts your selection on the mac clipboard (macOS only) | ? |
fif | Uses fzf and rg to find a term in files | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-brew-cask-install | Uses fzf to select programs to install (or show the home page) based on the output of brew cask search | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-brew-cask-uninstall | Uses fzf to select brew -installed programs to delete (or show the home page) | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-brew-install | Uses fzf to select programs to install based on the output of brew search | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-brew-uninstall | Uses fzf to select brew -installed programs to delete | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-brew-update | Uses fzf to select brew -installed programs to update | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-browse-pods | Use fzf to select a k8s pod. Preview shows pod's log tail output. | Using fzf as the secondary filter |
fzf-find-edit | Uses fzf to select files (displaying previews) to edit with $EDITOR | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-git-branch | Uses fzf to select a branch name in a git repository for use in scripts | From Mark Nielsen's Fuzzy Git Checkout article |
fzf-git-checkout | Uses fzf to check out a branch in a git repository | From Mark Nielsen's Fuzzy Git Checkout article |
fzf-grep-edit | Uses fzf to select files (displaying previews) that contain a search term to edit with $EDITOR | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-kill | Uses fzf to select processes to kill | Boost Your Command-Line Productivity With Fuzzy Finder |
fzf-vscode | Uses fzf and rg to search for text and then open the file in vscode | Hangops post by Mark Carey |
lessfilter-fzf | A less pre-processor to nicely display a wide range of file formats, including images and directories that can be used to show fzf previews (see Customization section). | Aloxaf/fzf-tab - Wiki/Preview |
pr-list | Use fzf to select a PR using gh | ? |
tm | Uses fzf to search for a tmux session or create one if there are no matches. | From the fzf wiki |
tmux-kill | Uses fzf to select a tmux session and kill it. | From the fzf wiki |
tmux-search | Uses fzf to select a tmux session. Skips fzf if there's only one match, exits if no match. | From the fzf wiki |
vagrant-box-search | Uses fzf to select a vagrant box and connect to it with ssh . | From the fzf wiki |
Installing
You should set this plugin to be last, or near to last in your framework's list of plugins to load. It dynamically generates $FZF_DEFAULT_OPT
and $FZF_DEFAULT_COMMAND
based on whether it sees things like rg
and bat
in your $PATH
, so it should come after other plugins have had a chance to extend your $PATH
.
Zgenom
Add zgenom load unixorn/fzf-zsh-plugin
to your .zshrc
with your other load commands.
Antigen
Add antigen bundle unixorn/fzf-zsh-plugin@main
to your .zshrc
ā Note that until https://github.com/zsh-users/antigen/issues/717 gets fixed in Antigen, it only recognizes plugins in master
branch. So you need to explicitly specify @main
here.
Oh-My-Zsh
git clone --depth 1 https://github.com/unixorn/fzf-zsh-plugin.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-zsh-plugin
- Add fzf-zsh-plugin to your plugin list - edit
~.zshrc
and changeplugins=(...)
toplugins=(... fzf-zsh-plugin)
Without using a framework
git clone --depth 1 git@github.com:unixorn/fzf-zsh-plugin.git
, then add itsbin
directory to your$PATH
.- Add
source /path/to/repository/checkout/fzf-zsh-plugin.plugin.zsh
to your.zshrc
file.
The scripts in this collection don't actually require you to be using ZSH as your login shell, they're being distributed as an oh-my-zsh-compatible plugin because it's convenient for me.
(optional) Install recommended tools
Optionally, to make the most out of fzf
preview (?
toggle), install the following tools and enable the advanced preview (see Customization section):
eza
- improved file/directory listing,bat
- acat
clone with syntax highlighting and Git integration,chafa
- show images (the image quality depends on the terminal emulator you use),exiftool
- also show image metadata,lesspipe.sh
, e.g.brew install lesspipe
- and other optional toolslesspipe.sh
relies on. See https://github.com/wofr06/lesspipe ā Note: This is not thelesspipe
already bundled in Ubuntu/Debian but an improved one (while package is calledlesspipe
, the binary islesspipe.sh
).
Customization
You can customize a few features by exporting the following environment variables in your init script (.zshrc
/.bashrc
or similar):
Export variable | Description |
---|---|
FZF_PREVIEW_ADVANCED | Use less viewer with a pre-processor to display improved previews for a wide range of files (requires you to install at least eza , bat , chafa , exiftool ; and very recommended lesspipe.sh and the tools it uses underneath: mdcat , in2csv ,...). This is an opt-in feature. |
FZF_PREVIEW_WINDOW | Set any value supported by fzf --preview-window option, e.g. right:65%:nohidden will show the preview by default. |
FZF_PATH | Path to install fzf binary and script, e.g. ${HOME}/.config/fzf . |
FZF_COLOR_SCHEME | Color scheme for fzf, e.g. --color='hl:148,hl+:154,pointer:032,marker:010,bg+:237,gutter:008' |
A note on lessfilter-fzf
You can also use it as a general less
preprocessor to extend the less
capabilities. To do that, place the following in your shell init scripts (.zshrc
/.bashrc
or equivalent):
export LESSOPEN='| lessfilter-fzf %s'
Ultimately, lesspipe.sh
(if present) will still honor your own lessfilter
if found in your PATH
, leading to the following execution: lessfilter-fzf > lesspipe.sh > lessfilter
.
Other FZF resources
- A Practical Guide to fzf: Building a File Explorer - Part one in a series of articles about
fzf
. - Fuzzy Git Checkout - Mark Nielsen wrote a good blog post showing how to use fzf for
git
checkouts. - So you've installed
fzf
. Now what? - Good blog post by Andrew Quinn with more tricks you can do withfzf
. - fzf-pass - ZSH plugin that uses fzf and pass for better password handling.
- fzf-tab - Replace ZSH's default completion with fzf.