模糊搜索工具fzf的安装和使用
fzf简介
fzf使用golang编写,让你通过输入模糊的关键词就可以定位文件或文件夹,当你的思维也习惯了模糊匹配后,在工作中可以大幅提高你的工作效率。
加入你记得文件名中包含yo,fi,na,那你只需要把所有文件送给fzf,然后在窗口输入yo fi na就可以了,无论是you_file_name,还是you_name_file都可以匹配上。
安装
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
升级
cd ~/.fzf && git pull && ./install
简单使用
find * -type f | fzf > selected
fzf会从STDIN 读入数据,然后将结果输出到STDOUT,上面命令从find徳搜索结果中读入,输出到selected中。
fzf快捷键
在finder(输出交换窗口)里,
- Ctrl-J/Ctrl-K/Ctrl-N/Ctrlk-N可以用来将光标上下移动
- Enter键用来选中条目, Ctrl-C/Ctrl-G/Esc用来退出
- 在多选模式下(-m), TAB和Shift-TAB用来多选
- Mouse: 上下滚动, 选中, 双击; Shift-click或shift-scoll用于多选模式
布局
#fzf默认全屏模式,你可以定制高度
vim $(fzf --height 40%)
#你可以通过$FZF_DEFAULT_OPTS来设定默认值
export FZF_DEFAULT_OPTS='--height 40% --reverse --border'
搜索语法
fzf默认会以“extened-search"模式启动, 这种模式下你可以输入多个以空格分隔的搜索关键词, 如^music .mp3$
, sbtrkt !fire
.
Token | Match Type | Description |
---|---|---|
sbtrkt | fuzzy-match | 匹配sbtrkt |
^music | prefix-exact-match | 以music开头 |
.mp3$ | suffix-exact-match | 以.mp结尾 |
‘wild | exact-match(quoted) | J精确包含wild |
!file | inverse-exact-match | 不包含fire |
!.file$ | inverse-suffix-match | 不以.mp3结尾 |
如果你不想用fuzzy match, 可以用fzf -e
做精确匹配,|可以做or匹配, 比如:
^core go$|rb$|py$
表示以core开头,以go或rb或py结尾。