我使用zsh
与oh-my-zsh
和 iTerm2 的组合在Mac上进行开发。
我对以下问题感到沮丧:
问题:如何为每个重新打开的标签保留分隔的历史记录?
答案 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_HISTORY
,INC_APPEND_HISTORY
和SHARE_HISTORY
仅设置第一个选项:
setopt noincappendhistory
setopt nosharehistory
setopt appendhistory
这将导致历史记录中的新条目(即会话期间运行的命令)仅在shell退出时附加到历史文件中。因此,当您关闭会话时,下一个打开的shell(重新打开)将在历史记录的底部包含刚刚关闭的shell的行。
另一种选择可能是为每个shell会话分别设置历史文件,并使用fc
内置设备自己从这些文件加载历史记录的方法。这至少部分取决于是否可以在shell会话中区分iTerm2选项卡(例如通过某些环境变量)以及重新打开选项卡时是否成立。