我设置了HISTORY_IGNORE
变量~/.zshrc
,它正确地阻止了这些命令被写入~/.zsh_history
.
up但我真正想要的是这些条目在按和时不显示down。 (与使用 bash 时相同HISTIGNORE
)。
我该如何做到这一点?
答案1
你需要为此编写一个钩子。正如它所说在HISTORY_IGNORE
文档中:
比较
HIST_NO_STORE
选项或zshaddhistory
挂钩,其中任何一个都会阻止此类命令被添加到交互历史记录中。如果您希望HISTORY_IGNORE
首先停止添加历史记录,您可以定义以下钩子:zshaddhistory() { emulate -L zsh ## uncomment if HISTORY_IGNORE ## should use EXTENDED_GLOB syntax # setopt extendedglob [[ $1 != ${~HISTORY_IGNORE} ]] }
我自己测试的重要发现:
$1
包括一个越线在最后。为 编写模式时请注意这一点HISTORY_IGNORE
。如果不考虑它,则不会匹配。- 每当 Zsh 将内存中的历史记录写入历史文件时,就会应用此函数。这样,就会追溯地从您的历史记录中删除行。小心这个!