MacOS zsh подсказка не показывает Purple? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь сделать свой git branch фиолетовый. Вот что у меня есть:

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
    # git symbolic-ref --short HEAD 2> /dev/null
}

setopt PROMPT_SUBST
PS1='%{%F{green}%}%n@%m:%{%F{yellow}%}%1~%{%F{red}%}$(parse_git_branch)%{%F{none}%}$ '

Так что мой username@machine: зеленый, а foldername желтый, как и ожидалось. Однако, если я изменю цвет red на purple или что-нибудь еще, кроме white или cyan, мое приглашение не покажет правильный цвет.

К вашему сведению: Вот что у меня есть bash:

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="\[\033[0;32m\]\u@\h\[\033[00m\]:\[\033[0;33m\]\W\[\033[0;35m\]\$(parse_git_branch)\[\033[00m\]\$ "

Я пробовал:

  • for i in {1..256}; do print -P "%F{$i}Color : $i"; done;, и мой терминал показывает все диапазоны цветов, поэтому я заменил red на некоторый код ANSI, но ветвь поворачивается cyan.
  • \e[0;31m$ \e[0m с escape-символом ANSI, но все равно не работает.
  • $F{}, $fg{}, et c.
  • И, конечно, выйдите из терминала, загрузите файл ~/.zshrc, перезагрузите компьютер.

Чего мне не хватает?

1 Ответ

2 голосов
/ 27 апреля 2020

С %F{...} вы можете использовать одно из следующего:

  1. Целое число, соответствующее записи в палитре вашего терминала (диапазон зависит от размера этой палитры). Это то, что вы видели со своим for l oop (хотя вы также можете использовать i=0; см. Следующий пункт). Например, %F{red}

  2. Одно из предопределенных имен black, red, green, yellow, blue, magenta, cyan или white (соответствует палитре от 0 до 7 соответственно). Например, %F{1} (обратите внимание, что некоторые терминалы могут поддерживать дополнительные имена.)

  3. Значение RGB, начинающееся с # и сопровождаемое 3 или 6 шестнадцатеричными цифрами. Например, %F{#f00} или% F {# ff0000} `

    Предполагая, что ваш терминал позволяет это, это дает вам больший контроль над отображаемым цветом, так как и %F{red}, и %F{1} просто говорят терминалу отображать цвет # 1 (который эмулятор терминала может позволить установить на любой цвет, который нравится пользователю). %F{#ff0000}, с другой стороны, всегда будет отображать самый яркий оттенок красного из доступных.

...