fd 是基于 Rust 开发的一个速度超快的命令行搜索工具,fd 旨在成为 Linux / Unix 下 find 命令的替代品。
fd的一些显着特征:
? fd plugin
bin/doc/img/zplugin.png
bin/doc/img/zplugin.svg
bin/doc/img/zplugin_refcard.png
bin/doc/img/zplugin_refcard.svg
bin/zmodules/Src/zdharma/zplugin.c
bin/zmodules/Src/zdharma/zplugin.mdd
fd 默认是不区分大小写和支持模糊查询的。
使用 -t
命令来区别要查找的内容
f, file 普通文件
d, directories 目录
l, symlink symbolic links
x, executable 可执行文件
e 空文件或者目录
使用,筛选文件夹
? fd -td plugin
plugins
snippets/OMZ::plugins
snippets/https--github.com--robbyrussell--oh-my-zsh--blob--master--plugins--fd
? fd plugin ~/.zinit/plugins
/root/.zinit/plugins/Aloxaf---fzf-tab/fzf-tab.plugin.zsh
/root/.zinit/plugins/romkatv---powerlevel10k/gitstatus/gitstatus.plugin.sh
/root/.zinit/plugins/romkatv---powerlevel10k/gitstatus/gitstatus.plugin.zsh
/root/.zinit/plugins/skywind3000---z.lua/z.lua.plugin.zsh
/root/.zinit/plugins/skywind3000---z.lua/z.lua.plugin.zsh.zwc
? fd -H plugin
.tmux/plugins
.tmux/plugins/tpm/HOW_TO_PLUGIN.md
.tmux/plugins/tpm/bin/clean_plugins
.tmux/plugins/tpm/bin/install_plugins
.tmux/plugins/tpm/bin/update_plugins
? fd -H -e md
.tmux/README.md
.tmux/plugins/tmux-continuum/CHANGELOG.md
.tmux/plugins/tmux-continuum/CONTRIBUTING.md
.tmux/plugins/tmux-continuum/LICENSE.md
.tmux/plugins/tmux-continuum/README.md
? fd -H -e md readme
.tmux/README.md
.tmux/plugins/tmux-continuum/README.md
.tmux/plugins/tmux-continuum/scripts/handle_tmux_automatic_start/README.md
.tmux/plugins/tmux-logging/README.md
.tmux/plugins/tmux-resurrect/README.md
fzf是目前最快的fuzzy finder。使用golang编写。结合其他工具(比如ag和fasd)可以完成非常多的工作。
如下表所示:
name | description | example |
---|---|---|
FZF_DEFAULT_COMMAND |
输入为 tty 时的默认命令 | export FZF_DEFAULT_COMMAND=‘fd --type f‘ |
FZF_DEFAULT_OPTS |
设置默认选项 | export FZF_DEFAULT_OPTS="--layout=reverse --inline-info" |
FZF_CTRL_T_COMMAND |
按键映射<CTRL-T> 行为设置 |
|
FZF_CTRL_T_OPTS |
按键映射<CTRL-T> 选项设置 |
|
FZF_CTRL_R_OPTS |
按键映射<CTRL-R> 选项设置 |
|
FZF_ALT_C_COMMAND |
按键映射<CTRL-C> 行为设置 |
|
FZF_ALT_C_OPTS |
按键映射<CTRL-C> 选项设置 |
--height
选项设置交互界面高度:# 使用 rg 进行搜索 export FZF_DEFAULT_COMMAND=‘rg --files --hidden‘
常用快捷键:
终端命令行下按下 Ctrl-r
会列出 history
命令目录,选中 Enter
离开 fzf
后,该条目会拷贝到命令行中。
在命令行中按下 Ctrl-t
会打开 fzf
窗口,此时如果找到某文件,并选择 Enter
,那么该文件名会被拷贝到命令行中。
假如在 fzf
选择窗口中想要选择多个文件,那么可以使用 tab
来进行多选,使用 Ctrl-n,
Ctrl-p
上下切换的时候,可以使用 Tab
来选中期望的文件进行多选操作。
如果想同时预览文件内容,可以使用--preview
选项
export FZF_CTRL_T_OPTS="--preview ‘(highlight -O ansi -l {} 2> /dev/null || cat {} || tree -C {}) 2> /dev/null | head -200‘"
在命令行上按下Alt-c
, 会列出当前文件夹下的目录,选中条目会自动进入到相应目录
如果使用--preview选项, fzf会自动用外部程序打开现在条目的文件, {}会被fzf选中行内容代替
fzf --preview ‘cat {}‘
建议安装bat, 是一个Rust编写的独立程序
也可以安装rougify(先安装ruby, 然后gem intall rouge
)
Bat: https://github.com/sharkdp/bat
Highlight: http://www.andre-simon.de/dok...
CodeRay: http://coderay.rubychan.de/
Rouge: https://github.com/jneen/rouge
然后在.zshrc里用函数或别名
fzfp() {
fzf --preview ‘[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (bat --style=numbers --color=always{} || rougify {} || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500‘
}
alias tt=‘fzf --preview ‘"‘"‘[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (bat --style=numbers --color=always{} || rougify {} || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500‘"‘"
#文件查找
alias fzf.w="fzf --height 40% --layout reverse --info inline --border --preview ‘file {}‘ --preview-window down:1:noborder --color ‘fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899‘"
#文件预览
alias fzf.p="fzf --preview ‘bat --style=numbers --color=always --line-range :500 {}‘"
alias f="fzf.p"
#Git 分支查找/Git Commit 查找
_fzf_gco() {
git branch | fzf | sed -e "s/* //g" | xargs -I {} git checkout {}
}
_fzf_gcs() {
git log --oneline | fzf | grep -o -E "^[0-9a-z]+" | xargs -I {} git show {}
}
原文:https://www.cnblogs.com/hongdada/p/14071281.html