当 $pwd 位于特定文件夹下时,不将命令保存到历史记录中?

当 $pwd 位于特定文件夹下时,不将命令保存到历史记录中?

我使用 zsh 进行自动补全和历史记录,它服务得很好,但命令历史记录有时充满了不需要的条目,例如,我在文件夹movies..etc 下执行许多任务,移动文件,重命名 ..etc 不应该出现在历史命令中全部。

是否可以避免该问题并排除保存在某些特定文件夹下的命令历史记录?

答案1

在我看来,您可以使用zshaddhistory钩子函数来覆盖默认的“保存历史记录”行为:

zshaddhistory() {
  case $PWD in
    (*/movies) return 1;;
    (*)        return 0;;
  esac
}

请参阅man zshmisc参考资料 中的描述,其中提到了 zshaddhistory 函数:

在以交互方式读取历史记录行时但在执行之前执行。唯一的参数是完整的历史行(以便任何终止换行符仍然存在)。

如果任何挂钩函数返回非零值,则历史记录行将不会被保存,尽管它会一直保留在历史记录中,直到执行下一行,从而允许您立即重用或编辑它。

相关内容