Как использовать escape-последовательности в приглашении ZSH для truecolor или bold?

Я нахожусь в процессе настройки моего приглашения ZSH, но, по-видимому, не могу использовать escape-последовательности, чтобы указать Konsole использовать жирный текст или определенный цвет RGB.

Я знаю о встроенных опциях форматирования в ZSH, вроде %F{000} %f, но, насколько я знаю, эти параметры позволяют только доступ к значениям по умолчанию (красный, синий и т. д.) и палитре 256 цветов. В то время как %B %bвстроенная опция для жирного, работает, кажется, ограничивается только одним цветом.

То, что я хочу сделать, это раскрасить определенный раздел приглашения, используя все цвета RGB, и / или сделать его жирным. Из того, что я мог найти, что-то вроде этого должно работать:

PS1="%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}"

Это должно дать мне розовый подсказку, как это:

HOSTNAME >:                  

Но то, что я получаю, это:

\e[38;0;255;0;255mHOSTNAME >:\e[0m

Я пробовал разные escape-последовательности, такие как \033\x1b, но ничего не работает.

Итак, как правильно использовать escape-последовательности в приглашениях ZSH?



Особенности:

OpenSUSE Kumbleweed KDE

Konsole - версия 16.12.0 (клавиатура: XFree 4)

ZSH - версия 5.3

3 ответа

Вам нужно изменить строки, чтобы zsh правильно их оценил.

Попробуйте изменить:

PS1="%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}"

Для того, чтобы:

PS1=$'%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}'

Обратите внимание на изменение от " в ' цитаты вместе с добавленным $

См. http://zsh.sourceforge.net/Guide/zshguide05.html для получения дополнительной информации о заменах.

Вы можете указать произвольные 24-битные цвета с помощью%Fс использованием тройки RGB.

      % print -P "%F{#009090}tealish"
tealish

(Вы должны представить соответствующий цвет, поскольку я не могу воспроизвести его, используя только текст.)

Возможно, я немного опоздал, но на ZSH ваш ответ будет:

      PS1="%F{green}%M >:%f"

В исходном коде для форматирования цвета использовались escape-последовательности ANSI, которые могут работать некорректно на всех терминалах Zsh. Этот обновленный код использует escape-последовательности, специфичные для Zsh (%F{color_code} и %K{color_code}), для установки основного цвета переднего и заднего K соответственно.

Чтобы применить это, вы должны установить его в файле .zshrc, расположенном по адресу ~/.zshrc.

Запустите это, чтобы установить его автоматически (он не отменит существующие настройки):

      touch ~/.zshrc && echo '\nPS1="%F{green}%M >:%f"' >> ~/.zshrc && echo "Success";

Вот вопрос StackOverflow, который отвечает на вопрос, как цвета работают в zsh.

Другие вопросы по тегам