Befehlsverlauf in zsh

32

Derzeit habe ich zsh so eingerichtet, dass der Befehlsverlauf sofort zwischen allen Sitzungen geteilt wird.

Angenommen, ich habe einen Terminal-Emulator mit zwei Registerkarten geöffnet, die jeweils eine zsh-Sitzung haben, A1 und A2. Wenn ich ls -la in A1 eingebe und dann zu A2 gehe und die Aufwärtspfeiltaste drücke, wird ls -la in der Eingabeaufforderung angezeigt.

Ich möchte es ändern, damit Sitzungen den Befehlsverlauf nicht miteinander teilen, obwohl beim Starten einer neuen Sitzung der gesamte vorherige Verlauf aller Sitzungen davor abgerufen wird.

Kunst
quelle
Das mache ich regelmäßig. Es gibt jedoch viele Fragen, auf die noch keine zufriedenstellende Antwort vorliegt.
Kunst
Tolle Frage und hilfreiche Antworten. Ich dachte, dass dies speziell eine iTerm2-Sache ist. Hoffentlich wird dieser Kommentar jemandem so, wenn er die gleiche Annahme macht.
Alan H.

Antworten:

40

Sie haben wahrscheinlich INC_APPEND_HISTORYfestgelegt.

Die INC_APPEND_HISTORYOption, von man zshoptions:

Diese Option funktioniert wie APPEND_HISTORY, außer dass neue Verlaufszeilen inkrementell (sobald sie eingegeben wurden) zu $ ​​HISTFILE hinzugefügt werden, anstatt zu warten, bis die Shell beendet wird.

Die gewünschte Option ist APPEND_HISTORY:

APPEND_HISTORY Wenn dies festgelegt ist, hängen zsh-Sitzungen ihre Verlaufsliste an die Verlaufsdatei an, anstatt sie zu ersetzen. Auf diese Weise werden für mehrere parallele zsh-Sitzungen die neuen Einträge aus ihren Verlaufslisten in der Reihenfolge, in der sie beendet werden, zur Verlaufsdatei hinzugefügt. Die Datei wird weiterhin in regelmäßigen Abständen neu geschrieben, um sie zu kürzen, wenn die Anzahl der Zeilen 20% über den in $ SAVEHIST angegebenen Wert hinausgeht (siehe auch die Option HIST SAVE BY COPY).

Sie können über diese Optionen in das lesen man zshoptions, man zshalloder online hier .

Um sie in Ihr ~/.zshrcoder ein ähnliches Format zu setzen, sollten Sie Folgendes haben:

setopt APPEND_HISTORY

Beachten Sie, dass, wenn Sie oh-my-zsh standardmäßig verwenden, ich glaube, INC_APPEND_HISTORYverwendet wird. Ich bin nicht zu 100% sicher, in welche Richtung die Dinge geladen werden, aber wenn die oh-my-zshOption die von Ihnen festgelegte überschreibt ~/.zshrc, können Sie damit experimentieren~/.oh-my-zsh/lib/history.zsh

simont
quelle
echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
Sie
Wie kann iTerm2 konfiguriert werden, um nach einem Neustart den individuellen Verlauf von Registerkarten wiederherzustellen (für zsh und oh-my-zsh)?
Googol
10

Wenn Sie zur akzeptierten Antwort hinzufügen möchten, ist oh-my-zshdie SHARE_HISTORYOption wahrscheinlich standardmäßig aktiviert.

Um eine Trennung zwischen laufenden Granaten und der gesamten Historie in einem neu geöffneten Terminal zu erreichen, müssen Sie die folgende Zeile kommentieren oder entfernen:

setopt share_history # share command history data

von ~/.oh-my-zsh/lib/history.zsh

siergiej
quelle
In meinem Fall ist der Pfad der Datei history.zsh~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya
3
Eine andere Möglichkeit, dies zu tun, besteht darin, unsetopt share_historydas .zshrcAfter zu oh-my-zshladen. Dokumentierte hier .
Counterbeing
danke @counterbeing, das es für mich behoben hat - du solltest das separat beantworten, es ist der einfachste Weg, es zu beheben
jcollum