2.3 KiB
fzf - Fuzzy finder for your shell
fzf is a general-purpose fuzzy finder for your shell.
It was heavily inspired by ctrlp.vim and the likes.
Requirements
fzf requires Ruby (>= 1.8.5).
Installation
Download fzf executable and put it somewhere in your search $PATH.
mkdir -p ~/bin
wget https://raw.github.com/junegunn/fzf/master/fzf -O ~/bin/fzf
chmod +x ~/bin/fzf
Or you can just clone this repository and run install script.
git clone https://github.com/junegunn/fzf.git
fzf/install
Make sure that ~/bin is included in $PATH.
export PATH=$PATH:~/bin
Install as Vim plugin
You can use any plugin manager. If you don't use one, I recommend you try vim-plug.
-
Edit your .vimrc
call plug#begin() Plug 'junegunn/fzf' " ... call plug#end()
-
Run
:PlugInstall
Then, you have :FZF [optional command]
command.
:FZF
:FZF find ~/github -type d
Usage
fzf will launch curses-based finder, read the list from STDIN, and write the selected item to STDOUT.
find * -type f | fzf > selected
Without STDIN pipe, fzf will use find command to fetch the list of files (excluding hidden ones).
vim `fzf`
Key binding
Use CTRL-J and CTRL-K (or CTRL-N and CTRL-P) to change the selection, press enter key to select the item. CTRL-C will terminate the finder.
The following readline key bindings should also work as expected.
- CTRL-A / CTRL-E
- CTRL-B / CTRL-F
- CTRL-W / CTRL-U
Useful bash bindings and settings
# vimf - Open selected file in Vim
alias vimf='vim `fzf`'
# fd - cd to selected directory
fd() {
DIR=`find ${1:-*} -path '*/\.*' -prune -o -type d -print 2> /dev/null | fzf` && cd "$DIR"
}
# fda - including hidden directories
fda() {
DIR=`find ${1:-*} -type d 2> /dev/null | fzf` && cd "$DIR"
}
# CTRL-T - Open fuzzy finder and paste the selected item to the command line
bind '"\er": redraw-current-line'
bind '"\C-t": " \C-u \C-a\C-k$(fzf)\e\C-e\C-y\C-a\C-y\ey\C-h\C-e\er"'
License
MIT
Author
Junegunn Choi