2009-05-03 13 views
19

Volevo utilizzare una delle funzionalità di Git-completion.bash ma non riesco a personalizzare l'aspetto che mi piacerebbe avere. Ecco una parte rilevante del mio .bash_profile:Aggiungi il nome del ramo di git al prompt dei comandi

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 

e non mostra il nome del ramo.

Tuttavia, se sostituisco export PS1 sopra con quello sottostante, funziona come previsto:

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

Credo che sia un po 'apostrofo/citazione questione marchi.

Come devo correggere la prima versione per farlo funzionare?

risposta

31

Il trucco per ottenere il diritto di quotatura è quello di avere eveything con doppia quotazione, ad eccezione di $(__git_ps1 "(%s)"), che è quotato in un'unica virgola.

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 

Una soluzione alternativa è quella di sostituire $( con \$( nel codice in questione.

Informazioni di base: due sostituzioni avvengono: prima all'ora export PS1="..." e successivamente quando viene visualizzato il prompt. Si desidera eseguire __git_ps1 ogni volta che viene visualizzato il prompt, quindi è necessario assicurarsi che la prima sostituzione mantenga intatto lo $(...). Quindi scrivi '$(...)' o "\$(...)". Queste sono le due idee di base dietro le soluzioni che ho proposto.

+0

Ecco fatto! Grazie :) –

+1

Usare la gente del posto per i colori è un bel trucco per rendere leggibile la cosa. Sto rubando quell'idea di sicuro. Per gli altri, mi piace usare il giallo per il mio percorso - 'local YELLOW =" \ [\ 033 [0; 33m \] "' – studgeek

5

Non sicuro, ma vcprompt potrebbe risolvere meglio per voi?

+1

Probabilmente non copre tutte le opzioni di __git_ps1 in git-completion.bash, ma mi piace molto il fatto che fornisca anche informazioni su altri sistemi di controllo versioni. Grazie per il consiglio! –

Problemi correlati