我使用zsh
与oh-my-zsh
和iTerm2的组合在Mac上进行开发。我对以下问题感到沮丧:
问题:如何为每个重新打开的选项卡保留分隔的历史记录?
对于https://github.com/robbyrussell/oh-my-zsh/issues/2537,
将unsetopt share_history
添加到您的.zhsrc
文件中。
除非iTerm2实际上只是在关闭时隐藏了一个标签并且保持shell会话在后台运行(根据the iTerm2 website,这似乎是一个选项),所以不可能完全恢复shell会话。在你的情况下,恢复选项卡似乎创建了一个新的shell会话,这导致从HISTFILE
读取历史记录。
如果你想阻止历史的任何合并,你必须确保选项APPEND_HISTORY
,INC_APPEND_HISTORY
和SHARE_HISTORY
只设置第一个:
setopt noincappendhistory
setopt nosharehistory
setopt appendhistory
这将导致历史记录中的新条目(即在会话期间运行的命令)仅在shell退出时附加到历史文件。因此,当您关闭某个会话时,下一个打开的shell(重新打开)将在历史记录的底部包含刚刚关闭的shell的行。
另一种选择可能是为每个shell会话提供单独的历史文件,并使用fc
内置设备自己的方法从这些文件加载历史记录。这至少部分取决于是否可以在shell会话中区分iTerm2选项卡(例如通过某些环境变量)以及在重新打开选项卡时是否成立。