我正在尝试使用“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 -DSkipTests
。Ctrl-r
第三次按下 不会导致新的建议,因为 不允许重复HIST_FIND_NO_DUPS
。没有HIST_FIND_NO_DUPS
shell 会mvn clean package
再次向您显示。