2009-07-20 2 views
189

Ho visto una demo git per Mac OS X online in cui è configurata per avere più colori.Come configurare il termine Mac OS X in modo che git abbia colori?

Ad esempio, il suo prompt è ambra, la sua directory ls è viola e il suo output git diff ha ~ 4 colori (rosa, verde chiaro, rosso, giallo pallido).

Puoi dirmi come posso configurare il terminale Mac OS X per ottenerlo? È sicuramente Mac OS X Terminal.app, non iTerm.

+3

Appartiene a superuser.com? – OscarRyz

+3

Tranne che superuser.com è ancora in beta privata e probabilmente yinglcs non ha accesso. – Fredrik

+0

Esiste qualche requisito di iscrizione beta per Super User oltre a quanto menzionato su http://blog.stackoverflow.com/2009/07/super-user-semi-private-beta-begins/? – las3rjock

risposta

11

Normalmente non è qualcosa che si configura il terminale da fare ... Il terminale non è a conoscenza di ciò che sta visualizzando, ma prova questo nella tua shell (se stai usando bash, in alcune altre shell che non esporti ma chiamare setenv o altro):

export CLICOLOR=1 
export TERM=xterm-color 

È quindi possibile utilizzare LSCOLORS generator per configurare qualcosa che è possibile esportare utilizzando qualcosa di simile:

export LSCOLORS=fxfxcxdxbxegedabagacad 

(Quanto sopra dovrebbe dare directory viola)

Quando hai finito e soddisfatto del risultato, aggiungi le tre linee al file/etc/bashrc o .bashrc nella home directory dell'utente.

Modifica: Inoltre, nel terminale, assicurarsi che la casella di controllo "Visualizza colori ANSI" (nella pagina "Testo") sia selezionata.

+0

.bashrc funziona anche tu? Sul mio Mac è .bash_profile, so che è .bashrc su Linux, ma ho pensato che fosse diverso su mac con l'intera cosa BSD (anche LSCOLORS è diverso su Linux e BSD/Mac, a quanto pare). –

+0

.bashrc funziona per me ... E sì, è diverso. gls usa LS_COLORS (che può essere generato anche usando la pagina collegata a) – Fredrik

+0

Grazie. Ma come si può configurare i colori come "grano", "viola" nel prompt o nell'output di ls? o "rosa" nell'output "git diff". Grazie. – yinglcs

0

Per l'output ls colorato, suggerirei di installare gnu coreutils e utilizzare invece quella versione di ls. Per entrambe le versioni di ls devi passare il flag corretto, che è --color per la versione gnu o -G per la versione OS X standard. Quindi puoi fare qualcosa come

alias ls='ls --color' 

nel tuo .bashrc.

Per colorare il vostro messaggio che sarà necessario utilizzare i codici colori corretti per il terminale, ma la mia utilizza

PROMPT="$(print '%{\e[0;38m%}%{\e[1;1m%]%}[%m:%c] %n%%%{\e[0m%}') " 

per produrre

[hostname:directory] username% 

in bianco grassetto.

56

Per visualizzare il colore nell'output di git diff, è necessario configurare git. Prova a eseguire

$ git config --global color.diff true 

per impostare il tuo $ HOME/.gitconfig in modo appropriato.

+0

William, si! Questo è quello che mi mancava. – avernet

+0

grazie, funziona perfettamente! – antiqe

10

Questo è quello che uso nel mio file .profile. Funziona come un incantesimo perché mi permette di vedere il corrente git branch e il suo stato attraverso il colore. Se si desidera modificare, si noti che è importante per escape color codes per evitare problemi di avanzamento riga in linee lunghe.

# Setting GIT prompt 
c_cyan=`tput setaf 6` 
c_red=`tput setaf 1` 
c_green=`tput setaf 2` 
c_sgr0=`tput sgr0` 

branch_color() 
{ 
    if git rev-parse --git-dir >/dev/null 2>&1 
    then 
     color="" 
     if git diff --quiet 2>/dev/null >&2 
     then 
      color=${c_green} 
     else 
      color=${c_red} 
     fi 
    else 
     return 0 
    fi 
    echo -n $color 
} 

parse_git_branch() 
{ 
    if git rev-parse --git-dir >/dev/null 2>&1 
    then 
     gitver="["$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')"]" 
    else 
     return 0 
    fi 
echo -e $gitver 
} 

#It's important to escape colors with \[ to indicate the length is 0 
PS1='\[email protected]\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ ' 
+0

Quale file .profile hai menzionato? –

379

William Purcell's answer abilita solo colore per il comando 'git diff.Fate questo per abilitare i colori per tutti i comandi git:

$ git config --global color.ui true 
+0

Proprio quello di cui avevo bisogno. Grazie. – jffgrdnr

+0

Perfezione pura. Grazie Signore. –

+0

oppure puoi controllare questa scelta alternativa più ricca qui: https://gist.github.com/trey/2722934 –

0

aprire l'applicazione terminale, quindi aprire il dialogo delle preferenze tramite il menu (Terminali -> Preferenze) o premendo Comando + ,. Una volta aperta la finestra di dialogo delle preferenze, seleziona lo stile del terminale dal riquadro a sinistra, seleziona Testo dalla barra dei pulsanti, quindi assicurati che la casella di controllo "Visualizza colori ANSI" sia selezionata.

Ciò abiliterà i colori sul terminale. Per ottenere colori nell'output sul terminale, è necessario incorporare i comandi ANSI per i colori nei dati inviati al terminale. Come questo è fatto dipende dai comandi. Ad esempio (come mostrato sopra) il comando ls ha un'opzione per i colori. Per i codici colore, fai una ricerca su google per "ansi color".

+0

Si noti che la domanda è già chiusa come fuori tema. :) –