如何让fzf的CTRL-T功能搜索指定的两个目录树(Gentoo Linux)
自定义fzf CTRL-T的搜索目录范围
要让fzf的CTRL-T功能仅搜索~/my/..和/usr/local/这两个目录树,最直接的方式是修改FZF_CTRL_T_COMMAND环境变量,替换它的默认搜索命令。
方法说明
fzf的CTRL-T快捷键默认会调用系统的find(或fd,如果已安装且优先级更高)遍历当前目录生成文件列表。通过定义FZF_CTRL_T_COMMAND,你可以指定自定义的搜索范围和规则。
具体配置步骤
打开
~/.bashrc文件,在已有的fzf配置块中添加FZF_CTRL_T_COMMAND的定义:如果你的系统安装了
fd(推荐,搜索速度更快),使用以下配置:export FZF_CTRL_T_COMMAND='fd --type f --hidden --follow --exclude ".git" ~/my/.. /usr/local/'如果没有
fd,用find替代(兼容性更广):export FZF_CTRL_T_COMMAND='find ~/my/.. /usr/local/ -type f -not -path "*/\.*" 2>/dev/null'(注:如果需要包含隐藏文件,去掉
find命令中的-not -path "*/\.*",或在fd命令中保留--hidden)修改后的完整fzf配置片段示例:
if [ -x "$(command -v fzf)" ] then source /usr/share/fzf/key-bindings.bash # 自定义CTRL-T搜索目录:~/my/.. 和 /usr/local/ export FZF_CTRL_T_COMMAND='fd --type f --hidden --follow --exclude ".git" ~/my/.. /usr/local/' # 无fd时使用find: # export FZF_CTRL_T_COMMAND='find ~/my/.. /usr/local/ -type f -not -path "*/\.*" 2>/dev/null' fi export FZF_DEFAULT_OPTS=" --layout=reverse --info=inline --height=80% --multi --preview-window=:hidden --preview '([[ -f {} ]] && (bat --style=numbers --color=always {} || cat {})) || ([[ -d {} ]] && (tree -C {} | less)) || echo {} 2> /dev/null | head -200' --color='hl:148,hl+:154,pointer:032,marker:010,bg+:237,gutter:008' --prompt='∼ ' --pointer='▶' --marker='✓' --bind 'ctrl-p:toggle-preview' --bind 'ctrl-a:select-all' --bind 'ctrl-y:execute-silent(echo {+} | pbcopy)' --bind 'ctrl-e:execute(echo {+} | xargs -o vim)' --bind 'ctrl-v:execute(code {+})' "保存文件后,执行以下命令使配置生效:
source ~/.bashrc
效果验证
新开终端或重新加载bashrc后,按下CTRL-T,fzf就会只展示~/my/..和/usr/local/目录下的文件供你搜索选择。
内容的提问来源于stack exchange,提问作者Jonas Stein
相关产品推荐
相关产品推荐

