如何阻止ZSH合并所有结束标签的历史记录?

时间:2018-02-19 20:24:24

标签: zsh iterm2 oh-my-zsh

我使用zshoh-my-zsh iTerm2 的组合在Mac上进行开发。 我对以下问题感到沮丧:

  • N 标签已打开
  • 关闭终端
  • 重新打开它(使用使用系统窗口恢复设置
  • 所有先前打开的标签的历史记录已合并为每个重新打开的标签

问题:如何为每个重新打开的标签保留分隔的历史记录?

2 个答案:

答案 0 :(得分:3)

https://github.com/robbyrussell/oh-my-zsh/issues/2537

unsetopt share_history添加到您的.zhsrc文件中。

答案 1 :(得分:2)

除非iTerm2实际上只是在关闭时隐藏了一个标签并保持shell会话在后台运行(根据the iTerm2 website,似乎是一个选项),所以无法完全恢复shell会话。在您的情况下,恢复选项卡时似乎创建了一个新的shell会话,这导致从HISTFILE读取历史记录。

如果您想阻止合并历史记录,则必须确保选项APPEND_HISTORYINC_APPEND_HISTORYSHARE_HISTORY仅设置第一个选项:

setopt noincappendhistory
setopt nosharehistory
setopt appendhistory

这将导致历史记录中的新条目(即会话期间运行的命令)仅在shell退出时附加到历史文件中。因此,当您关闭会话时,下一个打开的shell(重新打开)将在历史记录的底部包含刚刚关闭的shell的行。

另一种选择可能是为每个shell会话分别设置历史文件,并使用fc内置设备自己从这些文件加载​​历史记录的方法。这至少部分取决于是否可以在shell会话中区分iTerm2选项卡(例如通过某些环境变量)以及重新打开选项卡时是否成立。