Темы oh-my-zsh не отображаются должным образом (фон остается белым)

Я пытаюсь понять, почему мои темы oh-my-zsh не работают должным образом. Цвета отображаются правильно, но фон остается белым (с черным текстом). ниже мой /.zshrc файл и текущая переменная пути:

    # Path to your oh-my-zsh configuration.
    ZSH=$HOME/.oh-my-zsh

    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"

    # Set name of the theme to load.
    # Look in ~/.oh-my-zsh/themes/
    # Optionally, if you set this to "random", it'll load a random theme each
    # time that oh-my-zsh is loaded.
    export ZSH_THEME="robbyrussell"

    # Example aliases
    # alias zshconfig="mate ~/.zshrc" 
    # alias ohmyzsh="mate ~/.oh-my-zsh"

    # Set to this to use case-sensitive completion
    # CASE_SENSITIVE="true"

    # Comment this out to disable weekly auto-update checks
    # DISABLE_AUTO_UPDATE="true"

    # Uncomment following line if you want to disable colors in ls
    #DISABLE_LS_COLORS="true"

    # Uncomment following line if you want to disable autosetting terminal title.
    # DISABLE_AUTO_TITLE="true"

    # Uncomment following line if you want red dots to be displayed while waiting for   completion
    # COMPLETION_WAITING_DOTS="true"

    # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
    # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
    # Example format: plugins=(rails git textmate ruby lighthouse)
    plugins=(git rails ruby brew)

    source $ZSH/oh-my-zsh.sh

    # Customize to your needs...
    autoload -U colors
    colors

здесь $PATH:

    ➜  ~  echo $PATH
    /Users/natascha/.rbenv/shims:/Users/natascha/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/texbin

Я нахожусь в Mac OS X 10.7.5 и установлен oh-my-zsh несколько месяцев назад.. Я сделал сообщение в git проблеме, https://github.com/robbyrussell/oh-my-zsh/issues/929#issuecomment-11652602, похоже, до сих пор не разрешены? Мои плагины работают (т.е. Я могу набрать рельсы c для "консоли рельсов" ).

Спасибо за любую помощь.

Ответ 1

Короткий ответ: нет, zsh не может помочь вам здесь. Вам нужно изменить настройки цвета эмулятора терминала, а не настройки zsh.

Это то, что вы сейчас видите:

What you're seeing

и это то, что вы ожидаете увидеть:

The RobbyRussell Theme

Это строка, которая производит это приглашение:

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%}'

Это приводит к:

Green background in the prompt

Однако это более чем вероятно не то, что вы хотите. Обратите внимание на несколько вещей:

  • 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:

Robby Russel <code>zsh</code> theme with <code>Homebrew</code> Terminal.app profile

Если вам нужна хорошая, предустановленная, простая в использовании цветовая схема, посмотрите Solarized.

Ответ 2

Как сказано в ответе выше: "Вам нужно изменить настройки цвета эмулятора терминала:"

Я не вижу причин, по которым меняют приложение терминала. Самый простой способ - только изменить тему на одну из доступных тем в ссылке ниже, вы можете найти ту, которая подходит для тем oh-my-zsh.

osx-terminal-themes