위쪽 화살표에서 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의 대응인 것 같습니다.\[그리고 \]배쉬에서.

관련 정보