Как работают цветовые коды zsh ansi?

#zsh #zshrc

#zsh #zshrc

Вопрос:

Я хочу сделать имя моего хоста в моем терминале оранжевым. Как мне это сделать?

Ответ №1:

Запуск следующего кода в вашем терминале должен сообщить вам, поддерживает ли ваш терминал 256 цветов.

 for COLOR in {0..255} 
do
    for STYLE in "38;5"
    do 
        TAG="33[${STYLE};${COLOR}m"
        STR="${STYLE};${COLOR}"
        echo -ne "${TAG}${STR}${NONE}  "
    done
    echo
done
  

он также показывает вам код для каждого цвета в форме, 38;5;x где x указан код для одного из 256 доступных цветов.
Также обратите внимание, что при изменении "38;5" на "48;5" будет показан эквивалент цвета фона. Затем вы можете использовать любые цвета, которые вам нравятся, для оформления приглашения, как упоминалось ранее.

Комментарии:

1. Каково значение ${NONE} ?

Ответ №2:

Во-первых, я не уверен, какой терминал вы используете и будет ли он вообще поддерживать оранжевый цвет. Мой поддерживает следующие цвета: красный, синий, зеленый, голубой, желтый, пурпурный, черный и белый. И вот как я получаю цвета в своем терминале:


Сначала вам нужно загрузить цвета с помощью autoload . Я использую следующее, чтобы загрузить цвета и присвоить им значимые имена

 #load colors
autoload colors amp;amp; colors
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
    eval $COLOR='%{$fg_no_bold[${(L)COLOR}]%}'  #wrap colours between %{ %} to avoid weird gaps in autocomplete
    eval BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
done
eval RESET='%{$reset_color%}'
  

Вы можете задать имя хоста в своем приглашении, используя %m строку. Итак, чтобы установить, скажем, красное имя хоста, вы бы сделали

 ${RED}%m${WHITE}>
  

который будет печатать что-то вроде bneil.so>

Комментарии:

1. Это отличный фрагмент @yoda. Знаете ли вы, есть ли способ 1) Узнать, какие цвета загружены в автозагрузку colors amp;amp; цвета? 2) Знаете, какие цвета поддерживаются вашим терминалом?

2. Это цвета, которые загружаются autoload . Этот маленький цикл просто переименовывает их в более понятные названия цветов (например, RED вместо fg_no_bold_RED или что-то в этом роде). Если вы используете Mac OS X 10.6 и ниже, Terminal.app по умолчанию будет поддерживать только 16 цветов. Вы можете скачать iterm2 для Mac, который является отличным терминалом и поддерживает 256 цветов. Я думаю, что в OS X 10.7 Terminal.app поддерживает 256 цветов (хотя я не могу проверить, поскольку я не обновлял). Вы также можете использовать этот удобный скрипт , чтобы посмотреть, сколько цветов он поддерживает.

3. @yoda, я также добавил перенос процентов при СБРОСЕ. В противном случае у меня та же проблема со «странным пробелом».

4. Когда я пытаюсь использовать этот первый фрагмент, я получаю сообщение об ошибке: command not found: autocomplete

Ответ №3:

С принтами

 <ESC>[33mHostname<ESC>[0m
  

Является управляющим символом x1b