
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.