Ответ 1
Короткий ответ: нет, zsh
не может помочь вам здесь. Вам нужно изменить настройки цвета эмулятора терминала, а не настройки zsh
.
Это то, что вы сейчас видите:
и это то, что вы ожидаете увидеть:
Это строка, которая производит это приглашение:
PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c
%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
У Z-Shell есть некоторые настройки foreground
, background
, которые вы можете использовать в PROMPT
- то, что означает fg_bold
(передний план - полужирный). Вы можете заменить это на bg_
для фона и опустить bold
для использования нежирного шрифта.
Например, мы можем установить фон PROMPT
на green
, добавив %{bg[green]%}
:
PROMPT='%{$bg[green]%}%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c
%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
Это приводит к:
Однако это более чем вероятно не то, что вы хотите. Обратите внимание на несколько вещей:
-
bg[green]
не распространяется на край окна терминала - настройкиPROMPT
работают только там, где линия рисуется. - Цвет фона reset до 'default' в конце подсказки - сделанный
%{$reset_color%}
(необходимо изменить цветforeground
по умолчанию). Получение консистента, цвет фона цельной линии становится беспорядочным.
Как работают цвета
Грубо (я мог ошибаться в деталях, но, судя по всему, общий смысл является правильным): используемая вами оболочка посылает a color code
терминальному эмулятору. Терминальный эмулятор отвечает за интерпретацию этого цветового кода и отображение его на экране. Это означает, что есть две настройки, с которыми вы можете играть:
- Настройки цвета
shell
. Это то, что вы делаете в своемzshrc
. Прежде всего, это позволяет обеспечить согласованность - вы можете сказать: "Показывать этот бит подсказки в том же$COLOR
, что и этот бит подсказки". Этот не означает означает, что пользователь увидит приглашение в$COLOR
;$COLOR
- это метка, не намного больше. - Отображаемые настройки цвета. Если вы установите предпочтительные
font
,background
,text color
и т.д. Здесь вы можете сказать "отобразить все, что говорит оболочка,$COLOR_1
какred
,$COLOR_2
какgreen
" и т.д..
В терминале ANSI
можно использовать 16 цветов, которые могут или не могут отображаться корректно. Проверьте эту таблицу для некоторых общих цветов терминалов и обратите внимание на различия между ними!
Фиксация ваших цветов
Если вы используете Terminal.app
(в OS X, я бы рекомендовал iTerm2
), откройте настройки для терминала (command + ,) и выберите "Настройки". Там есть куча "профилей", которые вы можете выбрать - чтобы эмулировать снимок экрана robbyrussell
выше, вам нужно немного поиграть с цветами. "Homebrew" довольно близок, но имеет разные "текстовые" цвета (зеленый, а не белый).
[Вот тема robbyrussell
zsh
с профилем Homebrew
Terminal.app:
Если вам нужна хорошая, предустановленная, простая в использовании цветовая схема, посмотрите Solarized.