模糊搜索工具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結尾。