현재 git 브랜치, npm 패키지 버전 정보, 내가 있는 가상 환경 등을 볼 수 있도록 사용자 정의 bash 프롬프트를 설정했습니다. 그러나 기록을 찾아보기 위해 위쪽 화살표 키를 누르면 프롬프트에 결함이 있습니다.
일반적으로 다음과 같습니다.
그러나 기록을 탐색하면 람다 기호와 명령 사이의 공백이 사라집니다.
가끔 이런 일이 발생하는데 왜 그런지 모르겠습니다. 나는 단지 작은 공간에 대해 까다로웠던 것 같지만, bash 프롬프트를 구성하는 데 많은 시간을 소비한 후에는 그것이 완벽해 보이길 원했습니다.
이것이 내 .bashrc의 모습입니다. 차이점이 있다면 Windows 버전의 Git Bash(btw)를 사용하고 있습니다.
bashPrompt() {
SYMBOL="λ"
COUNT=(`find ./ -maxdepth 1 -name "package.json"`)
if [ ${#COUNT[@]} -gt 0 ]; then
NPM_PACKAGE_INFO="($(node -p -e "require('./package.json').version"))"
else
NPM_PACKAGE_INFO=""
fi
if [ ! -z "$CONDA_DEFAULT_ENV" ]; then
ENV=" ($CONDA_DEFAULT_ENV)"
else
ENV=""
fi
if [ -d .git ]; then
if [ -z "$(git status --porcelain)" ]; then
echo "[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;32;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
else
echo "[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;33;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
fi
else
echo "[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
fi;
}
PROMPT_COMMAND='PS1="$(bash프롬프트)"'
답변1
문자열 중 하나는 다음과 같습니다.
"[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;32;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\]\n\[\e[0;37;40m${SYMBOL}\] "
\[\]
각 텍스트를 쌍 으로 포함합니다 . 개행 문자를 제거 \n
하고 PS1을 사용해 보면 다음과 같습니다.
PS1="[\[\e[0;36;40m\u@\H\]\[\e[0;37;40m]\]\[\e[1;34;40m${ENV}\] \[\e[1;31;40m\w\]\[\e[1;32;40m$(__git_ps1)\] \[\e[0;37;40m${NPM_PACKAGE_INFO}\] n\[\e[0;37;40m${SYMBOL}\] "
위쪽 키(위쪽 화살표)를 누르면 대부분의 프롬프트가 기록 명령으로 대체되는 것을 볼 수 있습니다.
줄 간격을 사용하려는 텍스트를 괄호 바깥에 배치하세요.
PS1="[\[\e[0;36;40m\]\u@\H \[\e[0;37;40m]\]\[\e[1;34;40m\]${ENV} \[\e[1;31;40m\]\w\[\e[1;32;40m\]$(__git_ps1) \[\e[0;37;40m\]${NPM_PACKAGE_INFO} n\[\e[0;37;40m\]${SYMBOL} "
그런 다음 다시 시도해 보세요.
작동하면 개행 문자를 추가 \n
하고 다시 시도하세요.
여전히 문제가 있는 경우 bash를 4.4.18(현재 버전) 또는 이와 유사한 버전으로 업데이트하세요.