Условная цветная подсказка ZSH

Я пытаюсь раскрасить свое приглашение на основе кода возврата предыдущей команды. У меня есть следующее:

PROMPT='%{$fg_bold[cyan]%}%~$(git_prompt_info) %($?.%{fg_bold[cyan]%}.%{$fg_bold[red]%})»%{$reset_color%} '

В частности, у меня проблемы с частью %($?.%{fg_bold[cyan]%}.%{$fg_bold[red]%}).

К сожалению, мое приглашение выглядит так:

введите здесь описание изображения

Что я делаю не так?

ИЗМЕНИТЬ:

После исправления моей опечатки у меня теперь есть:

PROMPT='%{$fg_bold[cyan]%}%~$(git_prompt_info) %($?.%{$fg_bold[cyan]%}.%{$fg_bold[red]%})»%{$reset_color%} '

Моя подсказка теперь выглядит так:

введите здесь описание изображения


person carloabelli    schedule 02.09.2015    source источник


Ответы (2)


Вы забыли $ для расширения параметра, и вы не ставите перед ? доллар; это флаг условного выражения, а не ссылка на параметр.

%(?.%{$fg_bold[cyan]%}.%{$fg_bold[red]%})
  ^   ^
person chepner    schedule 02.09.2015
comment
Ха-ха, да, только что увидел, что его вернули, но поведение все равно какое-то странное. я обновлю вопрос - person carloabelli; 02.09.2015
comment
Идеально после этого второго исправления. Спасибо! - person carloabelli; 02.09.2015

Альтернативой может быть отправка кода возврата (если он отличается от 0) на kill -l, чтобы вы могли отобразить имя кода ошибки.

Это то, что я использую (для подсказки справа)

setopt PROMPT_SUBST
RPS1='%(?..%{$fg_bold[red]%}[%? $(kill -l $?)]%{${reset_color}%} )%T' # time
person Francisco    schedule 03.09.2015
comment
Определенно интересно, и я подумаю об этом, но я предпочитаю больше тонкости в своей подсказке. Спасибо, что поделились - person carloabelli; 03.09.2015