Zsh

zsh 中的每個目錄歷史記錄

  • August 20, 2021

我很高興使用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

使用我的外掛時,您不必在全域和目錄歷史記錄之間手動切換。

理想情況下,所有其他匹配的歷史命令將出現在這些命令之後,可選擇指定優先級元素的最大數量。

這也適用於我的外掛。

引用自:https://unix.stackexchange.com/questions/71189