zsh 忽略 HIST_FIND_NO_DUPS

zsh 忽略 HIST_FIND_NO_DUPS

我正在嘗試將我的 Z shell 配置為不使用“setopt HIST_FIND_NO_DUPS”顯示重複的歷史記錄條目。

HIST_FIND_NO_DUPS
When searching for history entries in the line editor, do not display duplicates of a line previously found, even if the duplicates are not contiguous.

然而,它並沒有按照預期的方式運作。當我有這段歷史時:

    1  history
    2  cd /bin
    3  cd /bin
    4  cd /bin

我希望按 UP 兩次(設置為“up-line-or-history”)並在提示中獲得“history”。然而,我得到的是“cd /bin”。如果我按 UP 四次,它將轉到「歷史記錄」命令,這基本上是未設定 HIST_FIND_NO_DUPS 的預設行為。

我知道我可以使用其他選項來防止重複的命令首先被保存(例如 HIST_IGNORE_ALL_DUPS),但這不是我想要的行為。

答案1

HIST_FIND_NO_DUPS

什麼時候s̲e̲a̲r̲c̲h̲i̲n̲g̲對於行編輯器中的歷史條目,不要顯示先前找到的行的重複項,即使重複項不連續。

我認為它按設計工作,setopt HIST_FIND_NO_DUPS當您按下向上箭頭時不應影響結果。它會影響您按 後顯示的搜尋結果Ctrl-r。假設您有以下歷史:

mvn clean package
mvn clean package
mvn clean package -DSkipTests
mvn clean package

現在,如果您按下Ctrl-r並鍵入,mvn您會收到mvn clean package建議。當您Ctrl-r再次按下時,您將得到mvn clean package -DSkipTests。第三次按下Ctrl-r不會產生新的建議,因為 不允許重複HIST_FIND_NO_DUPS。沒有HIST_FIND_NO_DUPS外殼會mvn clean package再次向您展示。

相關內容