使用 zsh 时忽略历史记录

使用 zsh 时忽略历史记录

我设置了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 将内存中的历史记录写入历史文件时,就会应用此函数。这样,就会追溯地从您的历史记录中删除行。小心这个!

相关内容