如何阻止 ZSH 合并所有关闭选项卡的历史记录?

How to stop ZSH from merging history for all closing tabs?

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

问题:如何为每个重新打开的选项卡保留分离的历史记录?

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

unsetopt share_history 添加到您的 .zshrc 文件。

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

如果你想阻止任何历史合并,你必须确保在选项 APPEND_HISTORYINC_APPEND_HISTORYSHARE_HISTORY 中只设置第一个:

setopt noincappendhistory
setopt nosharehistory
setopt appendhistory

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


另一种选择是为每个 shell 会话创建单独的历史文件,并使用内置的 fc 设置您自己的从这些文件加载​​历史的方法。这至少部分取决于是否可以在 shell 会话中区分 iTerm2 选项卡(例如通过某些环境变量),以及当 re-opening 选项卡时是否成立。