Contents

超級終端機 fzy

fzy 是一個輕量的命令列模糊搜尋(fuzzy finder)工具,設計簡潔,能快速從大量文字清單中互動式地選取一個項目。它特別適合搭配其他指令使用,讓選擇檔案、切換分支、搜尋歷史紀錄等操作變得更直覺。

安裝方式

使用 zplug 安裝(zsh 環境)

1
2
3
4
5
6
7
8
9
zplug "jhawthorn/fzy", \
    as:command, \
    rename-to:fzy, \
    hook-build:"
    {
        make
        sudo make install
    } &>/dev/null
    "

手動安裝(Linux/macOS)

1
2
3
4
git clone https://github.com/jhawthorn/fzy.git
cd fzy
make
sudo make install

macOS Homebrew

1
brew install fzy

基本使用方式

fzy 從 stdin 讀取清單,讓使用者以模糊匹配互動式選取,最後將結果輸出到 stdout:

1
2
3
4
5
6
7
8
# 選擇一個檔案並開啟
find . -type f | fzy | xargs vim

# 從目前目錄選擇 Python 檔案
find . -name "*.py" | fzy

# 從 ls 結果中選取
ls | fzy

常見整合場景

搭配 git 切換分支

1
2
# 互動式選擇分支後切換
git branch | fzy | xargs git checkout

搭配命令歷史搜尋

~/.zshrc~/.bashrc 中加入:

1
2
3
4
5
6
7
8
9
# Ctrl+R 模糊搜尋歷史指令
fzy-history() {
    selected=$(fc -ln 1 | fzy)
    BUFFER="$selected"
    CURSOR=$#BUFFER
    zle redisplay
}
zle -N fzy-history
bindkey '^R' fzy-history

搭配 cd 快速切換目錄

1
2
# 互動式選擇並進入目錄
cd $(find . -type d | fzy)

快速殺掉程序

1
kill -9 $(ps aux | fzy | awk '{print $2}')

fzy 與 fzf 的差異

特性 fzy fzf
效能 極快,C 語言實作 快,Go 語言實作
多選 不支援 支援(--multi / Tab 鍵)
Preview 功能 有(--preview
Shell 整合 需手動設定 提供完整 shell plugin
排序演算法 優先最短路徑 更靈活的 scoring
安裝大小 非常小 稍大

fzy 的優點在於排序演算法更精準,對於較短的搜尋詞能更準確地定位目標。fzf 則功能更豐富,適合需要多選或 preview 的場景。

參考資料

https://asciinema.org/a/TNkbpJmduO878wMUsr6iyobxF.png