fzf 是一个速度和适用范围都极好的工具,借助 UNIX 管道,可以接入日常几乎所有终端 CLI 操作中,对所有的 list 都能有美好的可交互式模糊过滤体验。
It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
一些技巧
使用 -m
参数支持多选
cat $(fzf -m)
然后就可以实用 tab 或者 shift+tab 实现多选。在使用 cat/rm 等命令时很好用。
使用 **
作为 trigger
unset **<Tab>
unalias **<Tab>
善用 --preview
交互式地选择 git branch。
# git interactive checkout
gcb() {
result=$(git branch -a --color=always | grep -v '/HEAD\s' | sort |
fzf --height 50% --border --ansi --tac --preview-window right:70% \
--preview 'git log --oneline --graph --date=short --pretty="format:%C(auto)%cd %h%d %s" $(sed s/^..// <<< {} | cut -d" " -f1) | head -'$LINES |
sed 's/^..//' | cut -d' ' -f1)
if [[$result != ""]]; then
if [[$result == remotes/*]]; then
git checkout --track $(echo $result | sed 's#remotes/##')
else
git checkout "$result"
fi
fi
}
实用脚本
fzf-tab 替换 zsh 的默认补全选择菜单
Aloxaf/fzf-tab ,如其自我介绍
Replace zsh's default completion selection menu with fzf!
这个脚本可以将 zsh 的默认 completion 结果转给 fzf 显示,让你在选择补全结果的时候获得 fzf 加持。
若使用 zimfw 安装,在 .zimrc
内添加:
zmodule Aloxaf/fzf-tab
fzf-fasd, 配合 fasd 可代替 z
wookayin/fzf-fasd: 🌸 fzf + fasd integration ,实现了类似 z 的效果, z<Tab>
后使用 fzf 选择最近进入过的目录。
其他零零散散
bindkey | fzf # 搜索当前 shell 里所有绑定了的快捷键
fzf --preview "bat {} --color=always" # 快速预览当前以及子目录下文件内容,不在乎颜色的话 bat 可以换成 cat
cd $(find . -type d | fzf) # 可选择进入某个深层子目录
cd $(fd --type directory | fzf) # 与上面类似,不过使用更便捷的 fd
Top comments (0)