iTerm2 (バージョン3): タブごとに個別の履歴?

iTerm2 (バージョン3): タブごとに個別の履歴?

私は iTerm2 (バージョン 3) を使っていて、気に入っています。しかし、しばらく前から、コマンド履歴がタブ間で共有されるという、非常に厄介な問題が発生しています。たとえば、最初のタブで、コマンドfooとコマンドを実行しbar、次に 2 番目のタブに移動して を実行し、最初のタブに戻るとします。上矢印で、 の順にsay Hello提案されることを期待していますが、代わりに が提案されます。barfoosay Hello

この動作を修正する方法はありますか?

答え1

zshを使用している場合は、次の2行を次~/.zshrcの行の後に追加します。source $ZSH/oh-my-zsh.sh

unsetopt inc_append_history
unsetopt share_history

から zshoptions(1) - Linux マニュアルページ:

INC_APPEND_HISTORY

このオプションは、シェルが終了するまで待たずに、新しい履歴行が(入力されるとすぐに)$HISTFILE に段階的に追加されることを除いて、APPEND_HISTORY と同様に機能します。

シェア履歴

このオプションは、履歴ファイルから新しいコマンドをインポートするだけでなく、入力したコマンドを履歴ファイルに追加します (後者は 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、次の2行を~/.bashrc

shopt -s histappend
PROMPT_COMMAND="history -a;history -c;history -r;$PROMPT_COMMAND"

これを有効にするには、必ず新しいタブを開いてください

関連情報