zsh 터미널의 긴 줄 바꿈 문제

zsh 터미널의 긴 줄 바꿈 문제

터미널에서 우회로가 길어지는 문제가 있습니다. 이 문제를 해결하기 위해 프롬프트 환경 변수를 수정하는 데 도움을 줄 수 있는 사람이 있습니까? 내 프롬프트 환경 변수는 다음과 같습니다.

function parse_git_branch() {
    git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p'
}

COLOR_DEF=$'\e[0m'
COLOR_USR=$'\e[38;5;243m'
COLOR_DIR=$'\e[38;5;197m'
COLOR_GIT=$'\e[38;5;39m'
setopt PROMPT_SUBST
export PROMPT='${COLOR_USR}%n${COLOR_DIR}@%m ${COLOR_GIT} %1d$(parse_git_branch)${COLOR_DEF}$'

내 문제는 여기에 설명되어 있습니다.https://github.com/vercel/hyper/issues/1566

답변1

이 11개의 문자/바이트는 실제로 공간을 차지하지 않고 너비도 0임을 zsh에 알려야 합니다 $'\e[38;5;243m'. 그러면 줄 편집기가 화면 오른쪽 끝에 도달했을 때 이를 알 수 있습니다.

에서 zsh와 마찬가지로 다른 모든 이스케이프 시퀀스와 마찬가지로 tcsh로 묶어서 수행됩니다 .%{...%}

PROMPT=$'%{\e[38;5;243m%}'

또한 이를 사용하여 %5{weird stuff%}내부 콘텐츠가 5열 너비로 표시되어야 한다고 zsh에 지시할 수도 있습니다. info zsh 'prompt expansion'자세히보다.

하지만 여기서는 이러한 이스케이프 시퀀스를 직접 하드코딩하는 것보다 전경색 243을 사용 %F{243}하라는 지시를 받는 것이 좋습니다.zsh

관련 정보