Как настроить термин Mac OS X так, чтобы у git был цвет? [закрыто]


200

Я видел демо-версию Mac OS X в сети, в которой он настроен на использование нескольких цветов.

Например, его подсказка янтарная, его lsкаталог пурпурный, а его git diffвывод имеет ~ 4 цвета (розовый, светло-зеленый, красный, бледно-желтый).

Можете ли вы сказать мне, как я могу настроить терминал Mac OS X для достижения этого? Это определенно Mac OS X Terminal.app, а не iTerm.


3
За исключением того, что superuser.com все еще находится в закрытой бета-версии, и yinglcs, вероятно, не имеет доступа.
Фредрик

Существуют ли какие-либо требования для участия в бета-тестировании Super User, помимо того, что упомянуто на blog.stackoverflow.com/2009/07/… ?
las3rjock

3
Наверное, нет, но сколько пользователей знают об этом? Не похоже, что на superuser.com есть ссылка на этот пост, которую пользователь, перенесший вопрос, найдет, когда попадет туда (если это так, я не могу его найти).
Фредрик

3
Еще один полезный вопрос закрыт. К счастью, не раньше, чем некоторые люди могли ответить.
Бен Терли

1
К настоящему времени общепризнанно, что Git-вопросы относятся к теме; Закрытие @ casperOne здесь не так, и я проголосовал за открытие.
Марк Амери

Ответы:


391

Ответ Уильяма Перселла включает только цвет для команды 'git diff'. Сделайте это, чтобы включить цвета для всех команд git:

$ git config --global color.ui true

Как раз то, что мне было нужно. Спасибо.
Jffgrdnr

1
Чистое Совершенство. Спасибо, сэр.
Брэндон Бак

1
или вы можете проверить этот альтернативный более богатый выбор здесь: gist.github.com/trey/2722934
Яннис Дран

@yinglcs, прими этот ответ уже, ладно ?!
Элиран Малка

это не работает
KansaiRobot

57

Чтобы отобразить цвет в выводе git diff, вам необходимо настроить git. Попробуйте запустить

$ git config --global color.diff true

установить ваш $ HOME / .gitconfig соответствующим образом.


Уильям, да! Это то, чего мне не хватало.
avernet

спасибо, работает отлично!
Antiqe

13

Обычно это не то, что вы настраиваете для терминала ... Терминал не знает, что он показывает, но попробуйте это в вашей оболочке (если вы используете bash, в некоторых других оболочках вы не экспортируете, а вызываете setenv или что-то другое):

export CLICOLOR=1
export TERM=xterm-color

Затем вы можете использовать генератор LSCOLORS для настройки того, что вы можете экспортировать, используя что-то вроде:

export LSCOLORS=fxfxcxdxbxegedabagacad

(выше должно дать вам фиолетовые каталоги)

Когда вы закончите и будете удовлетворены результатом, добавьте три строки в файл / etc / bashrc или в файл .bashrc в домашнем каталоге вашего пользователя.

Редактировать: Также, в вашем терминале, убедитесь, что флажок «Отображать цвета ANSI» (на странице «Текст») установлен.


.bashrc тоже работает? На моем mac это .bash_profile, я знаю, что это .bashrc в Linux, но я подумал, что на Mac все было по-другому, в отличие от BSD (кажется, что LSCOLORS также отличается в Linux и BSD / Mac).
Хорхе Исраэль Пенья

У меня работает .bashrc ... И да, он другой. gls использует LS_COLORS (который также может быть сгенерирован с использованием страницы, на которую указывает ссылка)
Фредрик,

Спасибо. Но как можно настроить цвета «пшеница», «пурпур» в подсказке или вывод ls? или 'pink' в выводе 'git diff'. Спасибо.
yinglcs

Возможные цвета - это тот, который вы можете найти на сайте, на который я ссылался, он является частью стандарта, и когда они его определили, вы были счастливы, если у вас был терминал, способный отображать 16 цветов.
Фредрик

13

Это то, что я использую в своем файле .profile. Работает как шарм, потому что позволяет мне видеть текущую ветку git, а также ее состояние через цвет. Если вы хотите изменить его, обратите внимание, что важно избегать цветовых кодов , чтобы избежать проблем с переводом строки в длинные строки.

# 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}\]$ '

Какой файл .profile вы упомянули?
Даршан Пураник

@DarshanPurani, я хотел сказать .profileфайл в моем $ bash
Марк М

2

Откройте приложение терминала, затем откройте диалог настроек либо через меню (Терминал -> Настройки), либо нажав Command+, . Когда откроется диалоговое окно настроек, выберите стиль терминала на панели слева, выберите «Текст» на панели кнопок, затем убедитесь, что установлен флажок «Отображать цвета ANSI».

Это включит цвета на терминале. Чтобы получить цвета в выводе на терминале, вам нужно будет вставить команды цвета ANSI в данные, отправляемые на терминал. Как это сделать, зависит от команд. Например (как было показано выше) lsкоманда имеет опцию цвета. Для цветовых кодов, сделайте поиск в Google для «цвета анси».


Обратите внимание, что вопрос уже закрыт как не по теме. :)
Райан Кон

0

Для цветного вывода ls я бы рекомендовал установить gnu coreutils и использовать вместо этого эту версию ls. Для любой версии ls вам нужно передать ей правильный флаг, который является --color для версии gnu или -G для стандартной версии OS X. Таким образом, вы можете сделать что-то вроде

alias ls='ls --color'

в вашем .bashrc.

Чтобы раскрасить подсказку, вам нужно использовать правильные коды цветов для вашего терминала, но мой использует

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

производить

[hostname:directory] username%

в жирном белом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.