我正在使用 iTerm2(版本 3),并且很喜欢它。但是它有一段时间一直存在一个非常烦人的问题,那就是命令历史记录在选项卡之间共享。例如,在第一个选项卡中,运行命令foo
和命令bar
,然后转到第二个选项卡并运行say Hello
,然后返回第一个选项卡;我希望并期望向上箭头建议bar
然后foo
,但它却建议say Hello
。
有没有什么办法可以纠正这个行为?
答案1
如果你使用 zsh,请将这两行附加到~/.zshrc
行后source $ZSH/oh-my-zsh.sh
unsetopt inc_append_history
unsetopt share_history
INC_APPEND_HISTORY
该选项的工作方式与 APPEND_HISTORY 类似,不同之处在于新的历史记录行是逐步添加到 $HISTFILE 中的(一旦输入),而不是等到 shell 退出。
分享历史
此选项既从历史文件导入新命令,也将您输入的命令附加到历史文件中(后者类似于指定 INC_APPEND_HISTORY)。
发帖者表示这正是他想要的选项:
附加历史记录
如果设置了该选项,zsh 会话将把其历史列表附加到历史文件,而不是替换它。因此,多个并行 zsh 会话都将按照它们退出的顺序将其历史列表中的新条目添加到历史文件中。
答案2
有关 harrymc 完美答案的额外信息。
这不是 Iterm2,而是 zsh 的一个功能,如果你使用以下命令,它会默认激活哦我的天啊
(看:https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh)
因此将这些放入你的 .zshrc 文件中source $ZSH/oh-my-zsh.sh
(参见 harrymc 的答案)
unsetopt inc_append_history
unsetopt share_history
答案3
您可以将 HISTFILE 环境变量设置为唯一的值,但我所做的只是在我的 ..bashrc文件:
export HISTFILE=""
但我并不想将历史记录保存在文件中。通过取消设置,历史记录仅保存在内存中。
答案4
对于Bash
用户来说,只需将这两行添加到您的~/.bashrc
shopt -s histappend
PROMPT_COMMAND="history -a;history -c;history -r;$PROMPT_COMMAND"
确保打开新标签以使此设置生效