Я заметил, что в вашей подсказке есть два способа установки цвета переднего плана zsh
.
PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'
Обе эти строки дадут синий цвет $
в качестве подсказки. Есть ли разница между ними и есть ли предпочтительный способ настройки подсказки?
Если вы хотите указать цветовой код, вы можете сделать $F{160}
или какое-то другое число, но вы не можете для %{$fg[160]%}
. Это единственное различие между этими двумя вариантами?
решение1
Прямой %F{...}
выход обрабатывается напрямую кодом zsh C. Использование $fg[blue]
— это доступ к ассоциативному массиву с именем fg
. Чтобы это работало, вам нужно вызвать colors
функцию, которая поставляется с zsh. Для приглашений, которые также полагаются на PROMPT_SUBST
опцию.
Нет большой разницы в том, что производят эти два способа. Первый чище и лучше работает с отслеживанием zsh состояния терминала. Он был добавлен в zsh в 2008 году, тогда как функция цветов была добавлена в 1999 году. В настоящее время вы вряд ли застрянете с zsh, достаточно старым, чтобы не иметь ни одной из этих функций, поэтому нет смысла придерживаться старого способа.
И как вы заметили, %F
может обрабатывать числа, где ваш терминал поддерживает 88 или 256 цветов. Если вы используете гораздо более новый zsh, вы также можете указать шестнадцатеричные триплеты, например, %F{#0000ff}
если у вас есть терминал с истинным цветом (или загрузить модуль zsh/nearcolor).