너무 많이 입력하면 ZSH 프롬프트가 사라집니다.

너무 많이 입력하면 ZSH 프롬프트가 사라집니다.

zsh를 사용하여 너무 오랫동안 입력하면 프롬프트가 사라지고 내가 입력한 나머지 내용과 같은 줄에 한 문자가 남고 나머지는 그 아래의 새 줄로 이동합니다. 이것이 동일한 COLUMNS문제인지 아니면 완전히 다른 문제인지 어떻게 알 수 있는지 잘 모르겠습니다.

루트 사용자 에게는 잘 작동하는 것 같습니다 .zshrc. 입력이 충분히 길면 올바른 프롬프트가 결함 없이 사라집니다. 내 개인적으로도 창 관리자에서 메인/스택 간을 전환한 후 자체적으로 문제가 해결되는 것 같습니다(AwesomeWM, 그것이 영향을 미치는지 확실하지 않음).

이미지:
루트 PS1:https://imgur.com/a/pfWZB7x

개인용 PS1:https://imgur.com/lJMyw4k

파일:
ROOT.zshrc:https://paste.gnome.org/pff0tkabw

개인.zshrc:https://paste.gnome.org/pxy8cfrcu

답변1

..zshrc.bashrczshbash

현재 프롬프트는 다음과 같이 설정되어 있습니다.

PS1='[${GREEN}%n${NC}@${GREEN}%m${NC}:${CYAN}%1~${NC}]%(?,,[${RED}%?${NC}])$(git_status)$ '

그 중에는 $GREEN에 의해 생성된 제어 시퀀스가 ​​있습니다 tput.

이에 대한 한 가지 문제는 색상 지정을 위해 zsh.

$GREEN동등한 변수를 버리고 대신 사용하는 것이 좋습니다.

PS1='[%F{green}%n%f@%F{green}%m%f:%F{cyan}%1~%f]%(?,,[%F{red}%?%f])$(git_status)$ '

각각은 %F{colorname}전경색을 으로 설정 colorname하고 %f해당 색상 사용을 중지합니다.

자신만의 이스케이프 시퀀스를 올바르게 사용하려면 각 시퀀스를 묶어야 %{...%}프롬프트에서 공간을 차지하지 않는다는 것을 쉘이 알 수 있습니다(루트 사용자의 init 파일은 이 작업을 수행하지만 우회적인 방식으로 수행함).

PS1='[%{${GREEN}%}%n%{${NC}%}@%{${GREEN}%}%m%{${NC}%}:%{${CYAN}%}%1~%{${NC}%}]%(?,,[%{${RED}%}%?%{${NC}%}])$(git_status)$ '

이는 또한 색상 코드가 포함된 셸 함수의 출력을 git_status업데이트해야 함을 의미합니다.

"프롬프트 시퀀스 확장"이라는 제목의 매뉴얼 섹션을 읽어보세요 zshmisc.

관련 정보