답변:
'readline'이 프롬프트의 표시 길이를 올바르게 계산하려면 \[
및 사이에 모든 이스케이프 시퀀스를 래핑해야합니다 \]
. 그것들이 없으면 'readline'은 프롬프트가 이전보다 길고 텍스트가 여백에 도달 한 시점을 알지 못한다고 생각합니다.
PS1 = " \ [ \ e [; 31m \] [\ u @ \ h \ W] \ $ \ [ \ e [m \] "
\[
, \]
? 나는 그렇게 생각하지만 그것은 나를 위해 작동하지 않는 것 같습니다.
skip-csi-sequence
를 억제하기위한 것 입니다.
\e[xxm
은 전체 문자열이 아닌 각 시퀀스 를 래핑해야 합니다.
\e[39m
하여 \[\e[;39m\]
잘 작동합니다.
[및] 팁은 OS X 10.8.2의 bash에서도 작동했습니다.
나는 사용한다:
PS1 = "[\ e [0; 37m \ W \ $ (git branch 2> / dev / null | grep -e '*'| sed 's / ^ .. (. *) / {\ 1} /') \ $ \ e [m] "
현재 사용중인 git 브랜치를 보여줍니다.