Contents

超級終端機 enhancd

enhancd 是一個增強版的 cd 指令,能夠記錄你曾經造訪過的所有目錄,並在你輸入 cd 時,透過互動式的模糊搜尋介面讓你快速跳到目標目錄,不需要輸入完整路徑。

傳統 cd 的不足

使用一般的 cd 指令時,你必須記住並輸入完整的路徑,或是一層一層地切換目錄:

1
cd /home/user/projects/web-app/src/components

這在目錄層級很深或路徑名稱很長時非常不便。

enhancd 的運作方式

enhancd 維護一個歷史記錄檔,每次你 cd 到某個目錄時就會記錄下來。之後輸入 cd 加上部分關鍵字,它會從歷史記錄中找出符合的目錄,並透過模糊搜尋工具(fzf、peco 等)讓你互動式選擇。

安裝方式

使用 zplug 安裝

~/.zshrc 中加入:

1
zplug "b4b4r07/enhancd", use:init.sh

然後執行:

1
2
zplug install
zplug load --verbose

使用 Oh My Zsh 安裝

1
2
git clone https://github.com/b4b4r07/enhancd \
    ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/enhancd

~/.zshrc 的 plugins 中加入:

1
plugins=(... enhancd)

手動安裝

1
2
git clone https://github.com/b4b4r07/enhancd
source enhancd/init.sh

~/.zshrc 中加入:

1
source /path/to/enhancd/init.sh

前置需求:安裝互動式篩選工具

enhancd 需要搭配一個互動式篩選器,推薦使用 fzf

1
2
3
4
5
6
# macOS
brew install fzf

# Linux
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

使用方式

基本用法

1
2
3
4
5
6
7
8
# 輸入部分目錄名稱,觸發互動式選擇
cd proj

# 直接顯示所有歷史目錄讓你選擇
cd

# 回到上一個目錄
cd -

搭配 fzf 的互動式介面

當有多個符合的目錄時,enhancd 會呼叫 fzf 顯示清單,讓你用上下鍵選擇或繼續輸入關鍵字篩選:

1
2
3
4
> proj
  /home/user/projects/web-app
  /home/user/projects/api-server
  /home/user/old-projects/legacy-app

設定選項

~/.zshrc 中可以自訂 enhancd 的行為:

1
2
3
4
5
6
7
8
# 指定使用的篩選工具(預設自動偵測)
export ENHANCD_FILTER=fzf

# 設定歷史記錄檔位置
export ENHANCD_DIR="$HOME/.enhancd"

# 停用 `cd -` 的增強功能(保留原始行為)
export ENHANCD_DISABLE_DOT=1

與其他工具比較

工具 功能 特點
原生 cd 切換目錄 需要完整路徑
enhancd 歷史目錄搜尋 需要先進入過才能記錄
z/autojump 常用目錄跳轉 依造訪頻率排序
fzf + find 全磁碟搜尋 不限於歷史記錄

參考資料

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