2009-05-03 5 views
19

Git-completion.bash 기능 중 하나를 사용하고 싶었지만 원하는 모양을 사용자 정의 할 수 없습니다. 내 .bash_profile의 관련 부분은 다음과 같습니다.명령 프롬프트에 git의 분기 이름을 추가하십시오.

source ~/.git-completion.bash 

function prompt 
{ 
local WHITE="\[\033[1;37m\]" 
local GREEN="\[\033[0;32m\]" 
local CYAN="\[\033[0;36m\]" 
local GRAY="\[\033[0;37m\]" 
local BLUE="\[\033[0;34m\]" 
export PS1=" 
${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w $(__git_ps1 '(%s)') ${GRAY} 
$ " 
} 
prompt 

이며 분기 이름이 표시되지 않습니다. 나는 아래의 하나 이상 수출 PS1을 대체 할 경우 예상대로

그러나, 그것은 작동 :

export PS1='\w$(__git_ps1 "(%s)") > ' 

나는 그것이 어떤 아포스트로피/인용 부호 문제 같아요.

제 1 판을 수정하려면 어떻게해야합니까?

답변

31

따옴표를 쓰려면 $(__git_ps1 "(%s)")을 제외하고는 큰 따옴표를 사용하는 것이 좋습니다.

source ~/.git-completion.bash 
function prompt 
{ 
local WHITE="\[\033[1;37m\]" 
local GREEN="\[\033[0;32m\]" 
local CYAN="\[\033[0;36m\]" 
local GRAY="\[\033[0;37m\]" 
local BLUE="\[\033[0;34m\]" 
export PS1=" 
${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w"' $(__git_ps1 "(%s)") '"${GRAY}" 
} 
prompt 

또 다른 해결책은 문제의 코드에서 \$($(을 교체하는 것입니다.

배경 정보 : 처음에는 export PS1="..."시에 두 개의 대체가 수행되고 나중에 프롬프트가 표시됩니다. 프롬프트가 표시 될 때마다 __git_ps1을 실행하려고하므로 첫 번째 대체가 $(...)을 그대로 유지해야합니다. 따라서 '$(...)' 또는 "\$(...)"을 씁니다. 이것들은 제가 제안한 솔루션의 기본 아이디어입니다.

+0

그게 전부 야! 감사합니다 :) –

+1

색상을 지역 주민을 사용하는 것은 멋진 일을 읽을 수 있도록 만드는 것입니다. 나는 그 아이디어를 확실히 훔쳐 가고있다. 다른 사람들을위한 참고 사항, 나는 내 경로에 노란색을 사용하는 것과 비슷하다. -'local YELLOW = "\ [\ 033 [0; 33m \]"' – studgeek

5

확실하지 않지만 vcprompt은 더 잘 해결할 수 있습니까?

+1

아마도 git-completion.bash에서 __git_ps1의 모든 옵션을 다루지는 않겠지 만 다른 버전 제어 시스템에 대한 정보도 제공하고 싶습니다. 팁 고마워! –

관련 문제