Як налаштувати термін 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
Yannis Dran

@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 (який також можна створити за допомогою сторінки, на яку посилається)
Fredrik

Дякую. Але як можна налаштувати такі кольори, як "пшениця", "фіолетовий" у вікні запису чи ls? або 'рожевий' у виході '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
Marc M

2

Відкрийте додаток терміналу, а потім відкрийте діалог налаштувань або через меню (Термінал -> Налаштування), або натиснувши Command+ ,. Після того, як відкриється діалог налаштувань, виберіть стиль терміналу на панелі зліва, виберіть Текст на панелі кнопок і переконайтесь, що прапорець "Відобразити кольори ANSI".

Це дозволить використовувати кольори на терміналі. Щоб отримати кольори у висновку на терміналі, вам потрібно буде вбудувати кольори команд ANSI у дані, що надсилаються до терміналу. Як це робиться, залежить від команд. Наприклад (як було показано вище) у lsкоманди є параметр кольорів. Для кольорових кодів виконайте пошук Google для "ansi color".


Зауважте, що питання вже закрите як поза темою. :)
Райан Кон

0

Для кольорового виводу ls я рекомендував би встановити gnu coreutils і використовувати цю версію ls замість цього. Для будь-якої версії ls вам потрібно передати правильний прапор, який є - колір для версії 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.