Como configurar o termo do Mac OS X para que o git tenha cores? [fechadas]

200

Vi uma demonstração on-line do Mac OS X git, na qual está configurada para ter várias cores.

Por exemplo, seu prompt é âmbar, seu lsdiretório é roxo e sua git diffsaída possui ~ 4 cores (rosa, verde claro, vermelho, amarelo pálido).

Você pode me dizer como posso configurar o terminal Mac OS X para conseguir isso? Definitivamente, é o Mac OS X Terminal.app, não o iTerm.

yinglcs
fonte
3
Exceto que o superuser.com ainda está na versão beta privada e os yinglcs provavelmente não têm acesso.
21119 Fredrik
Existe algum requisito de inscrição beta para superusuário além do mencionado em blog.stackoverflow.com/2009/07/… ?
Las3rjock
3
Provavelmente não, mas quantos usuários sabem disso? Não é como se houvesse um link para essa postagem no superuser.com que o usuário que receber a pergunta migrada encontrará quando chegar lá (se for, não consigo encontrá-la).
21119 Fredrik
3
Mais uma pergunta útil foi encerrada. Felizmente, antes que algumas pessoas possam responder.
Ben Thurley 23/03
1
Já está bem estabelecido que as perguntas do Git estão no tópico; O encerramento do @ casperOne aqui está errado e sou votado para reabrir.
Mark Amery

Respostas:

391

A resposta de William Purcell permite apenas cores para o comando 'git diff'. Faça isso para ativar cores para todos os comandos git:

$ git config --global color.ui true
flóio
fonte
Apenas o que eu precisava. Obrigado.
Jffgrdnr 15/03
1
Pura perfeição. Obrigado senhor.
Brandon Buck
1
ou você pode verificar essa opção mais rica alternativa aqui: gist.github.com/trey/2722934 #
Yannis Dran
@yinglcs, aceite já esta resposta, sim ?!
Eliran Malka
isso não funciona
KansaiRobot
57

Para exibir cores na saída do git diff, você precisa configurar o git. Tente correr

$ git config --global color.diff true

para definir seu $ HOME / .gitconfig adequadamente.

William Pursell
fonte
William, sim! Era isso que eu estava perdendo.
avernet
obrigado, funciona perfeito!
Antiqe
13

Normalmente, você não configura o terminal para fazer isso ... O terminal não sabe o que está mostrando, mas tente fazer isso no shell (se você estiver usando o bash, em outros shells que não exporta, mas chama setenv ou algo mais):

export CLICOLOR=1
export TERM=xterm-color

Você pode usar o gerador LSCOLORS para configurar algo que você pode exportar usando algo como:

export LSCOLORS=fxfxcxdxbxegedabagacad

(o acima deve fornecer diretórios roxos)

Quando estiver pronto e satisfeito com o resultado, adicione as três linhas ao arquivo / etc / bashrc ou .bashrc no diretório inicial do usuário.

Editar: Além disso, no seu terminal, verifique se a caixa de seleção "Exibir cores ANSI" (na página "Texto") está marcada.

Fredrik
fonte
.bashrc também funciona? No meu mac, é .bash_profile, eu sei que é .bashrc no Linux, mas achei que era diferente no mac com toda a coisa do BSD (também o LSCOLORS é diferente no Linux e no BSD / Mac, ao que parece).
Jorge Israel Peña
.bashrc funciona para mim ... E sim, é diferente. gls usos LS_COLORS (que também podem ser gerados utilizando a página ligada a)
Fredrik
Obrigado. Mas como alguém pode configurar cores como 'trigo', 'roxo' no prompt ou na saída ls? ou 'pink' na saída 'git diff'. Obrigado.
yinglcs 21/07/2009
As cores possíveis são as que você encontra no site ao qual vinculei, faz parte do padrão e, quando o definiram, você ficou feliz se tivesse um terminal capaz de mostrar 16 cores.
21119 Fredrik
13

É isso que eu uso no meu arquivo .profile. Funciona como um encanto porque me permite ver o ramo git atual, bem como seu estado através da cor. Se você quiser modificá-lo, observe que é importante escapar dos códigos de cores para evitar problemas de avanço de linha em linhas longas.

# 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='\u@\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ '
Marc M
fonte
Qual arquivo .profile você mencionou?
Darshan Puranik
@DarshanPurani, eu quis dizer o .profilearquivo no meu $ festa
Marc M
2

Abra o aplicativo do terminal e abra a caixa de diálogo de preferências pelo menu (Terminal -> Preferências) ou pressionando Command+ ,. Quando a caixa de diálogo de preferências for aberta, selecione o estilo do terminal no painel à esquerda, selecione Texto na barra de botões e verifique se a caixa de seleção "Exibir cores ANSI" está marcada.

Isso permitirá que as cores no terminal. Para obter cores na saída do terminal, você precisará incorporar comandos de cores ANSI nos dados enviados ao terminal. Como isso é feito depende dos comandos. Por exemplo (como foi mostrado acima), o lscomando possui uma opção de cores. Para os códigos de cores, faça uma pesquisa no Google por "ansi color".

codey
fonte
Observe que a pergunta já está fechada como fora do tópico. :)
Ryan Kohn
0

Para saída colorida de ls, eu recomendaria instalar o gnu coreutils e usar essa versão do ls. Para qualquer versão do ls, você precisará passar o sinalizador correto, que é --color para a versão gnu ou -G para a versão padrão do OS X. Então você pode fazer algo como

alias ls='ls --color'

no seu .bashrc.

Para colorir sua solicitação, você precisará usar os códigos de cores corretos para o seu terminal, mas o meu usa

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

para produzir

[hostname:directory] username%

em branco arrojado.

Amok
fonte