终端命令工具收集fd fzf

fd命令

简介

fd 是基于 Rust 开发的一个速度超快的命令行搜索工具,fd 旨在成为 Linux / Unix 下 find 命令的替代品。

fd的一些显着特征:

  1. 易于使用的语法 - fd * pattern *而不是find -iname * pattern *
  2. 多彩输出类似于ls命令之一
  3. 性能快。 开发人员的基准测试可在此处获得
  4. 默认情况下,智能搜索不区分大小写,如果图标容器为大写符号,则切换为区分大小写。
  5. 默认情况下不查看隐藏文件和目录
  6. 默认情况下不会查看*.gitignore*
  7. Unicode意识。

使用

模糊匹配

❯ 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

在当前目录下搜索文件名包含 reademe 且扩展名为 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命令

简介

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>选项设置
  • 界面fzf 默认会以全屏方式显示交互界面,可以使用--height选项设置交互界面高度:
# 使用 rg 进行搜索   export FZF_DEFAULT_COMMAND='rg --files --hidden' 

使用

常用快捷键:

  • Ctrl-j Ctrl-n 都能往下,不过 Ctrl-j 在我的配置中是切换到下 pane 所以我只用 Ctrl-n
  • Ctrl-k Ctrl-p 都能往上,不过 Ctrl-k 在我的配置中是切换到上 pane 所以我只用 Ctrl-p
  • Ctrl-c 或者 Ctrl-g 或者 Ctrl-q 或者 Esc 用来退出 abort
  • Ctrl-h 退格键 backspace,不过这个键和 tmux vim 有冲突所以一般不用
  • Ctrl-a 光标跳转到开头 Ctrl-e 跳转到行结尾
  • Ctrl-w 向前删以 word
  • Ctrl-u 删除所有输入

常用操作

历史记录搜索

终端命令行下按下 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 {}
}

参考:

推荐一款比 Find 快 10 倍的搜索工具 FD

fd - 查找命令的简单快速替代方案

每天学习一个命令:fzf 使用笔记

fzf Examples

模糊搜索神器fzf

fzf - 命令行模糊搜索神器

Bash “实趣”系列 —— 文件查找与预览(fzf)

posted @ 2020-12-01 22:36  hongdada  阅读(2182)  评论(0编辑  收藏  举报