Как использовать 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.