2009-05-03 7 views
19

私はGit-completion.bashの機能の1つを使いたがっていますが、私が望むようにカスタマイズすることはできません。ここに私の.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="..."に2つの置換が行われ、後でプロンプトが表示されます。プロンプトが表示されるたびに__git_ps1を実行したいので、最初の置換が$(...)のままであることを確認する必要があります。したがって、'$(...)'または"\$(...)"のいずれかを書きます。これらは、私が提案したソリューションの背後にある2つの基本的なアイデアです。

+0

それだけです!ありがとう:) –

+1

色を地元の人々を使用することは物事を読みやすくするための素晴らしいトリックです。私は確かにそのアイデアを盗んでいる。他の人にとっては、私のパスには黄色を使用するようなものがあります - 'local YELLOW =" \ [\ 033 [0; 33m \] "' – studgeek

5

確かにわかりませんが、vcpromptはそれをより良く解決できるかもしれませんか?

+1

おそらく、git-completion.bashの__git_ps1のすべてのオプションをカバーしているとは限りませんが、他のバージョンコントロールシステムについての情報も提供しているのが本当に好きです。ヒントをありがとう! –

関連する問題