zshのコマンド履歴


32

現在、コマンド履歴がすべてのセッション間ですぐに共有されるようにzshをセットアップしています。

ターミナルエミュレーターが開いており、2つのタブがあり、それぞれがzshセッションA1とA2であるとします。A1 にls -laと入力し、A2に移動して上矢印キーを押すと、コマンドプロンプトにls -laが表示されます。

新しいセッションを開始すると、それ以前のすべてのセッションから以前の履歴をすべて取得しますが、セッションコマンド履歴を互いに共有しないように変更したいと思います。


私は定期的にそれを行います。しかし、まだ満足のいく答えがない多くの質問があります。
アート

すばらしい質問と役に立つ回答。これは特にiTerm2の問題だと思いました。彼らが同じ仮定をするならば、このコメントがこの方法で誰かを願うでしょう。
アランH.

回答:


40

おそらくINC_APPEND_HISTORY設定されています。

INC_APPEND_HISTORYオプションからman zshoptions

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

必要なオプションはAPPEND_HISTORY次のとおりです。

APPEND_HISTORYこれが設定されている場合、zshセッションは履歴リストを置き換えるのではなく、履歴ファイルに追加します。したがって、複数の並列zshセッションでは、履歴リストからの新しいエントリがすべて、終了順に履歴ファイルに追加されます。行数が$ SAVEHISTで指定された値を20%超えると、ファイルは定期的に書き換えられてトリムされます(HIST SAVE BY COPYオプションも参照)。

これらのオプションについては、でman zshoptionsman zshallまたはオンラインで読むことができます

それらを設定するには、あなた~/.zshrcまたは同様のもので、あなたが持っている必要があります:

setopt APPEND_HISTORY

あなたが使用している場合、あることに注意してくださいああ、私の-zshのが、デフォルトでは、私は信じて、INC_APPEND_HISTORY使用されています。どのように物事がロードされるのか100%はわかりませんが、oh-my-zshオプションが設定したものをオーバーライドする場合~/.zshrc、あなたはそれをいじることができます~/.oh-my-zsh/lib/history.zsh


echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
-youfu

再起動後にタブの個々の履歴を復元するようにiTerm2を構成するにはどうすればよいですか(zshおよびoh-my-zshの場合)?
グーゴル

10

受け入れられた回答に追加するには、を使用する場合oh-my-zsh、おそらくSHARE_HISTORYデフォルトでオプションが有効になっています。

実行中のシェルと新たに開いた端末で結合された履歴全体を分離するには、次の行をコメントするか削除する必要があります。

setopt share_history # share command history data

から ~/.oh-my-zsh/lib/history.zsh


私の場合、history.zshファイルのパスは~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya

3
それについて移動するための別の方法は置くことですunsetopt share_history、あなたに.zshrcした後oh-my-zshにロードされます。ここに文書化されています
counterbeing

あなたは、それはそれを修正する最も簡単な方法は、別の答えだということにする必要があります-私のためにそれを固定することを@counterbeing感謝
jcollum
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.