zsh-Eingabeaufforderung beim Pfeil nach oben durcheinander

zsh-Eingabeaufforderung beim Pfeil nach oben durcheinander

Ich glaube, ich hatte einen Fehler wiediese Frage. Meine Aufforderung ist

PROMPT=$'\n%F{cyan}================================%f\n[%*] [%F{yellow}%?%f]\n[%F{cyan}%n@%m%f]\n[%F{green}%~%f]'

Ich habe beispielsweise Folgendes ausgeführt:

================================
[2022-08-23 14:02:43] [0]
[jyxjjj@DESMG-MacBookPro]
[~]$ php media app:build 

Wenn ich auf der Tastatur die Pfeiltaste nach oben und dann die Pfeiltaste nach unten drücke, wird Folgendes angezeigt:

================================
[2022-08-23 14:02:43] [0]
[jyxjjj@DESMG-MacBookPro]
[~]$ php media app:buphp media app:build 

Ich bin sicher, dass ich kein Fehlerbeispiel angegeben habe. Es zeigt nur

php media app:buphp media app:build 

und läuft korrekt als:

php media app:build 

zu.

Das bedeutet, dass alles, was ich gesehen habe, den korrekten Befehl ausführt.

Es handelt sich also lediglich um einen Anzeigefehler.

Dann habe ich alle Möglichkeiten getestet, nur das Entfernen des PS1/PROMPT-Exports behebt diesen Fehler.

Ich denke also, dass meine PS1 diesen Fehler verursacht hat.

Wie man es repariert?

Ich habe die Antwort nicht verstanden vondiese Frage.

Also möchte ich noch einmal fragen.

Es tut mir sehr leid.

Zusätzlich:

ein Teil meines zshrc:

autoload -U colors && colors

setopt histignoredups
setopt histignorealldups
setopt appendhistory
setopt sharehistory
setopt promptsubst

Dann:

$ echo $PS1

%F{cyan}================================%f
[%*] [%F{yellow}%?%f]
[%F{cyan}%n@%m%f]
[%F{green}%~%f]$(__git_ps1)$ 

$ echo $PROMPT

%F{cyan}================================%f
[%*] [%F{yellow}%?%f]
[%F{cyan}%n@%m%f]
[%F{green}%~%f]$(__git_ps1)$ 

$ echo $PROMPT_COMMAND
(nothing)

$ which PROMPT_COMMAND
PROMPT_COMMAND not found

$ which prompt_command
prompt_command not found

Ich habe getestet

PROMPT=$'\[\n\]\[%F{cyan}\]================================\[%f\n\][\[%*\]] [\[%F{yellow}\]%?\[%f\]]\n[\[%F{cyan}\]%n@%m\[%f\]]\n[\[%F{green}\]%~\[%f\]]'

und es druckte das [und]

Ich habe getestet

PS1='\n\[\e[36m\]================================\[\e[0m\]\n[\t] [\[\e[36m\]\u@\h\[\e[0m\]]\n[\[\e[32m\]\w\[\e[0m\]]'

in Bash und es funktioniert.

Antwort1

Ich hatte die Antwort selbst gefunden:

Aus dem zsh-Handbuch, Prompt-Erweiterung, einfache Prompt-Escapes,Abschnitt 13.2.5 - Visuelle Effekte.

%{...%}
Fügen Sie eine Zeichenfolge als wörtliche Escape-Sequenz ein. Die Zeichenfolge in den Klammern sollte die Cursorposition nicht ändern. […]

In meinem Code fehlten diese %{und %}. Sie scheinen die Gegenstücke von zsh zu sein\[und \]in Bash.

verwandte Informationen