如何阻止 ZSH 合并所有关闭选项卡的历史记录?
How to stop ZSH from merging history for all closing tabs?
我使用 zsh
与 oh-my-zsh
和 iTerm2 的组合在 Mac 上进行开发。
我对以下问题感到沮丧:
- N 个选项卡已打开
- 关闭终端
- 重新打开它(使用使用系统Window恢复设置)
- 所有以前打开的选项卡的历史记录已合并为每个重新打开的选项卡的历史记录
问题:如何为每个重新打开的选项卡保留分离的历史记录?
每 https://github.com/robbyrussell/oh-my-zsh/issues/2537,
将 unsetopt share_history
添加到您的 .zshrc 文件。
除非 iTerm2 实际上只是在关闭时隐藏一个选项卡并在后台保留 shell 会话 运行ning(根据 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 选项卡(例如通过某些环境变量),以及当 re-opening 选项卡时是否成立。
我使用 zsh
与 oh-my-zsh
和 iTerm2 的组合在 Mac 上进行开发。
我对以下问题感到沮丧:
- N 个选项卡已打开
- 关闭终端
- 重新打开它(使用使用系统Window恢复设置)
- 所有以前打开的选项卡的历史记录已合并为每个重新打开的选项卡的历史记录
问题:如何为每个重新打开的选项卡保留分离的历史记录?
每 https://github.com/robbyrussell/oh-my-zsh/issues/2537,
将 unsetopt share_history
添加到您的 .zshrc 文件。
除非 iTerm2 实际上只是在关闭时隐藏一个选项卡并在后台保留 shell 会话 运行ning(根据 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 选项卡(例如通过某些环境变量),以及当 re-opening 选项卡时是否成立。