zsh プロンプトが上矢印で壊れる

zsh プロンプトが上矢印で壊れる

次のようなエラーが出たと思いますこの質問私のプロンプトは

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

たとえば、私は次のように実行しました:

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

キーボードの上矢印を押してから下矢印を押すと、次のように表示されます。

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

私は欠陥サンプルを提供しなかったと確信しています。それは単に次のように表示されます

php media app:buphp media app:build 

次のように正しく実行されます:

php media app:build 

あまりにも。

つまり、私が見たものはすべて、正しいコマンドを実行するということです。

つまり、単なる表示エラーです。

その後、あらゆる方法をテストしましたが、PS1/PROMPT エクスポートを削除するだけでこのエラーが修正されます。

したがって、このエラーは PS1 が原因であると考えられます。

どうすれば修正できますか?

私は答えを理解できませんでしたこの質問

それでもう一度聞きたいです。

大変申し訳ありません。

追加:

私の zshrc の一部:

autoload -U colors && colors

setopt histignoredups
setopt histignorealldups
setopt appendhistory
setopt sharehistory
setopt promptsubst

それから:

$ 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

私はテストしました

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

そして、[そして]

私はテストしました

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

bash で実行すれば動作します。

答え1

私は自分で答えを見つけました:

zshマニュアルより、プロンプトの展開、簡単なプロンプトのエスケープ、セクション 13.2.5 - 視覚効果

%{...%}
文字列をリテラル エスケープ シーケンスとして含めます。中括弧内の文字列はカーソルの位置を変更しません。[…]

私のコードにはこれら%{とがありませんでした%}。これらはzshの対応するもののようです。\[そして\]bashでは

関連情報