終端命令工具收集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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章