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

问题描述 投票:-1回答:2

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

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

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

zsh iterm2 oh-my-zsh
2个回答
2
投票

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

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


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选项卡(例如通过某些环境变量)以及在重新打开选项卡时是否成立。

© www.soinside.com 2019 - 2024. All rights reserved.