Mehrzeilige Befehle in der Historie geben die erste Zeile nur mit doppeltem Backslash zurück

492
Werner

Ich verwende oh-my-zsh mit der folgenden Verlaufskonfiguration:

setopt appendhistory autocd extendedglob setopt EXTENDED_HISTORY setopt histignoredups sharehistory 

Die Historiesuche Ctrl+ Rund die Pfeiltasten sind auf die Standardwerte gesetzt, dh:

% bindkey '^r' "^R" history-incremental-search-backwar 

Seit einiger Zeit stehe ich jedoch vor dem Problem, dass beim Durchsuchen der Historie nach Befehlen die erste Zeile des Befehls mit doppeltem Backslash am Ende angezeigt wird, nicht jedoch die anderen Zeilen. Tatsächlich geschieht dies nur, wenn die Verlaufsdatei aktualisiert wird. Wenn der Befehl frisch ist und ich in der gleichen Shell nach ihm suche, werde ich sie richtig abrufen. Wenn ich jedoch die Shell schließe und sie wieder öffne, und versuche, den Befehl aus der Geschichte abzurufen, ich werde ihn wie folgt erhalten:

-> Eingabebefehl:

echo \ "multi-line command" 

Ergebnis bei Verwendung der Historiesuche ( bck-i-search: echo):

Echo \

Weiß jemand, was das verursacht? Die Informationen, die ich hier und anderswo gefunden habe, haben nicht geholfen :(

Als nächstes füge ich einen Auszug aus meiner Geschichte hinzu:

 4453* cd place 4454* someCommand -d folder \\ 4455* --opt 1 \\ 4456* -foo1 bar1 -foo2 bar2 -aeps 0 0.01 0.01 >&! output.log & 4457* du -sh 4460* ls * 4461* exit 

zsh-Version für die beiden Hosts: 5.0.2 und 5.0.5.

Dann habe ich aufgrund der Syntax einen mehrzeiligen Befehl hinzugefügt:

 3723 echo $ZSH_VERSION 3724 for x in 1 2 3; do echo $x \ndone 3725* someCommand -d folder \\ 

das funktioniert gut. Ein mehrzeiliges Zitat wie in:

echo "lala dquote> dump dquote> dump dquote> ok" 

ergebend:

 3732 echo "lala\ndump\ndump\nok" 

und was auch gut funktioniert.

Dies geschieht nicht auf meinem lokalen Computer (zsh Version 5.0.7), was auch zu mehrzeiligen Befehlen mit \ n anstelle von double \ führt:

15365 echo \\n multi \\n line \\n command 

Und auch auf einem anderen Remote-Server (4.3.11):

14133 example -d folder \\n -pp mpp \\n -c mcc \\n -x mxxz \\n -r mrr \\n -e 0 \\n -o out \\n -debug 

Auf allen Maschinen verwende ich die gleichen Konfigurationsdateien.

0
Anscheinend hat "zsh" Probleme beim Lesen / Speichern der Verlaufsdatei. Könnten Sie bitte einen Auszug Ihrer Verlaufsdatei hinzufügen, in den Sie mehrzeilige Befehle eingegeben haben. Im besten Fall einige mit expliziten Brüchen über die Escape-Zeile (wie in Ihrem Beispiel), einige mit Zeilenumbrüchen in Anführungszeichen und andere, bei denen Multilinien aufgrund von Syntax auftraten (z. B. `for x in 1 2 3; do echo $ x; done` mit * * Geben Sie ** ein, nachdem / anstelle von `;`) gedrückt wurde. Welche Version von `zsh 'verwenden Sie auch (` echo $ ZSH_VERSION`)? Adaephon vor 7 Jahren 0
Hallo ~ @ Adaephon, danke für deinen Kommentar. Ich habe die angeforderten Informationen hinzugefügt :) Werner vor 7 Jahren 0

1 Antwort auf die Frage

0
Achal Dave

Vielleicht liegt das an dem hier beschriebenen Problem ? Wenn ja, scheint das vorgeschlagene Update eine Aktualisierung von zsh nach Version 5.0.5 durchzuführen.

Leider ist es nicht mein fall, ich habe zsh 5.2 :( Werner vor 6 Jahren 0