zsh 忽略 HIST_FIND_NO_DUPS

zsh 忽略 HIST_FIND_NO_DUPS

我正在尝试使用“setopt HIST_FIND_NO_DUPS”配置我的 Z shell 以不显示重复的历史记录条目。

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,它会转到“history”命令,这基本上是未设置 HIST_FIND_NO_DUPS 的默认行为。

我知道我可以使用其他选项来防止重复命令首先被保存(例如 HIST_IGNORE_ALL_DUPS),但这不是我想要的行为。

答案1

HIST_FIND_NO_DUPS

什么时候风险评估对于行编辑器中的历史条目,不要显示先前找到的行的重复项,即使重复项不连续。

我认为它按设计工作正常,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 -DSkipTestsCtrl-r第三次按下 不会导致新的建议,因为 不允许重复HIST_FIND_NO_DUPS。没有HIST_FIND_NO_DUPSshell 会mvn clean package再次向您显示。

相关内容