приглашение 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\[и \]в баше.

Связанный контент