iTerm2(版本 3):每個選項卡都有單獨的歷史記錄?

iTerm2(版本 3):每個選項卡都有單獨的歷史記錄?

我正在使用 iTerm2(版本 3)並且喜歡它。但它已經做了一段時間的真正令人煩惱的事情是命令歷史記錄在選項卡之間共享。例如,在第一個選項卡中運行 commandfoo和 command bar,然後轉到第二個選項卡並運行say Hello,然後返回第一個選項卡;我希望並期望向上箭頭建議bar然後foo,但它會建議say Hello

有沒有辦法糾正這種行為?

答案1

如果您使用的是 zsh,請將這兩行加入到~/.zshrc後面一行source $ZSH/oh-my-zsh.sh

unsetopt inc_append_history
unsetopt share_history

zshoptions(1) - Linux 手冊頁:

INC_APPEND_HISTORY

此選項的工作方式與 APPEND_HISTORY 類似,只不過新的歷史記錄行會增量添加到 $HISTFILE(一旦輸入),而不是等到 shell 退出。

分享_歷史

此選項既可以從歷史檔案匯入新命令,也可以將您鍵入的命令追加到歷史檔案中(後者類似於指定 INC_APPEND_HISTORY)。

發文者表示這正是他正在尋找的選擇:

APPEND_HISTORY

如果設定了此項,zsh 會話會將其歷史清單附加到歷史文件中,而不是取代它。因此,多個並行 zsh 會話都會按照退出的順序將其歷史清單中的新條目新增至歷史檔案。

答案2

harrymc 完美答案的額外資訊。

這不是 Iterm2,而是 zsh 的功能,如果您使用,它會預設為啟動哦我的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"

確保開啟新分頁才能生效

相關內容