mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-18 00:03:39 -05:00
Initial commit
This commit is contained in:
120
README.md
Normal file
120
README.md
Normal file
@@ -0,0 +1,120 @@
|
||||
fzf: fuzzy finder for your shell
|
||||
================================
|
||||
|
||||
fzf is a general-purpose fuzzy finder for your shell.
|
||||
|
||||
It was heavily inspired by [ctrlp.vim](https://github.com/kien/ctrlp.vim).
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
fzf requires Ruby.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Download fzf executable and put it somewhere in your search $PATH.
|
||||
|
||||
```sh
|
||||
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](https://github.com/junegunn/fzf/blob/master/install) script.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/junegunn/fzf.git
|
||||
fzf/install
|
||||
```
|
||||
|
||||
Make sure that ~/bin is included in $PATH.
|
||||
|
||||
```sh
|
||||
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](https://github.com/junegunn/vim-plug).
|
||||
|
||||
1. [Install vim-plug](https://github.com/junegunn/vim-plug#usage)
|
||||
2. Edit your .vimrc
|
||||
|
||||
call plug#begin()
|
||||
Plug 'junegunn/fzf'
|
||||
" ...
|
||||
call plug#end()
|
||||
|
||||
3. Run `:PlugInstall`
|
||||
|
||||
Then, you have `:FZF [optional command]` command.
|
||||
|
||||
```vim
|
||||
: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.
|
||||
|
||||
```sh
|
||||
find * -type f | fzf > selected
|
||||
```
|
||||
|
||||
Without STDIN pipe, fzf will use find command to fetch the list of
|
||||
files (excluding hidden ones).
|
||||
|
||||
```sh
|
||||
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 binding and settings
|
||||
--------------------------------
|
||||
|
||||
```sh
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user