2013-07-02 5 views
11

명령 : 후 프롬프트의 색상은 노란색 될 것리콜 나쁜 커서 위치에서 배쉬 프롬프트 결과에 ANSI 컬러 이스케이프 시퀀스를 추가/편집이 내 명령과 같은 프롬프트 설정하면

export PS1='\033[0;33m[\[email protected]\h \w]\$ \033[00m' 

모든 것을를 ' $ '문자는 기본 터미널 색상이 입니다. 이것이 내가 원하는 것입니다. 그러나 명령 줄을 불러와 편집하려고 시도 할 경우 CommandArray를 시도 할 경우 UpArrow/Ctrl-A (set -o emacs) 또는 ESC K (set -o vi) 커서를 움직여보십시오. 편집이 길면 커서가 명령의 시작 부분에 위치하지 않습니다. Ctrl-A (set -o emacs) 또는^(set -o vi)를 입력해도 커서가 화면에 표시된 회선의 시작 부분으로 이동하지 않습니다. 마찬가지로 커서를 줄 끝 (Ctrl-E 또는 $, 따라)에 놓으려고하면 줄의 끝 부분을 지나쳐 여러 문자가 놓입니다. 프롬프트에 추가 한 이스케이프 문자로 인해 bash가 혼란 스럽습니다. 리콜 된 라인을 편집하고 싶을 때 단색으로 프롬프트를 변경하거나 다채로운 프롬프트로 리콜 된 명령의 편집을 올바르게 허용 할 수있는 방법이 있습니까?

답변

17

당신은 프롬프트의 길이를 계산할 때 너무 bash가 알고있는 그들을 무시하는 \[ ... \]의 비 인쇄 문자를 묶어야합니다 :

export PS1='\[\033[0;33m\][\[email protected]\h \w]\$ \[\033[00m\]' 
+0

충분히 확실히 간단했다 - 감사합니다 – Xaq