zsh 中的每個目錄歷史記錄
我很高興使用
zsh
一段時間以來,我對我的歷史設置非常滿意,它們是:# Write to history immediately setopt inc_append_history # History shared among terminals setopt share_history # Save extended info in history setopt extended_history # Ignore duplicates setopt hist_ignoredups
但是經常發生我需要在某些特定目錄中使用特定命令的情況。例如,當我在時,
~/my_project
我通常呼叫make target1 && ./run1
,但當我在時,~/second_project
我通常需要make target2 && cat foobar | ./run2
.即:不同的目錄,但類似的命令。
所以,我通常會在歷史記錄中
cd ~/my_project
鍵入make
然後向後搜尋,直到找到我需要的內容。但是如果碰巧我工作過second_project
,在搜尋歷史時,我會發現一些我不需要的命令。所以,我的問題是:zsh 是否存在外掛/設置/某些東西,以便在歷史記錄中搜尋時,首先顯示在目前目錄中呼叫的命令?
理想情況下,所有其他匹配的歷史命令將出現在這些命令之後,可選擇指定優先級元素的最大數量。
我會嘗試自己寫這樣的東西,但我仍然不知道如何編寫自定義 zsh 外掛,如何處理歷史等等。
有一個外掛聲稱完全符合您的要求,並根據目錄歷史外掛適當命名:
https://github.com/jimhester/oh-my-zsh/commit/baa187e4b903f39422a84b580e6e617ec3738e09
“Per-directory-history - 跟踪每個目前目錄和全域的先前命令歷史記錄,能夠在它們之間動態切換,綁定到 ctrl-g。” 他們的維基說。
我自己(還)沒有測試它,但根據評論它應該可以工作。
我遇到了完全相同的問題並編寫了一個 ZSH 外掛來解決它: https ://github.com/tymm/zsh-directory-history
使用我的外掛時,您不必在全域和目錄歷史記錄之間手動切換。
理想情況下,所有其他匹配的歷史命令將出現在這些命令之後,可選擇指定優先級元素的最大數量。
這也適用於我的外掛。