Как я могу получить радужную подсказку в zsh?

Мне нравится так называемая «радужная подсказка» в bash:

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

который я создаю таким образом:

export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"

К сожалению, этот код не работает в zsh (это моя основная оболочка).

Как я могу добиться того же результата в zsh?


person NVaughan    schedule 08.03.2018    source источник


Ответы (1)


В zsh это намного проще, так как оболочка предоставляет независимые от терминала управляющие последовательности для установки цвета. Например:

PS1='%B[%F{red}%n%F{green}@%F{blue}%m %F{purple}%~] %# %b%f'
  • %B/%b - включить/выключить жирный шрифт
  • %F{...} - установить цвет переднего плана. Вы можете использовать имена цветов для основных цветов или целочисленные индексы, такие как %F{173}, для терминалов с большими палитрами.
  • %f - отключить изменение цвета переднего плана (т.е. использовать цвет по умолчанию)
  • %n - имя пользователя
  • %m - имя хоста до первого .
  • %~ - имя каталога
  • %# - # для root, % для обычного пользователя (если вы все еще хотите $ вместо %, это просто сокращение для общей условной последовательности %(!.#.%%), которую вы можете заменить на %(!.#.$), как показано в man zshmisc, в состоянии оболочки.)

См. man zshmisc в разделе "РАСШИРЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ПОДСКАЗКИ" для получения полного списка.

person chepner    schedule 09.03.2018
comment
Здорово. Спасибо за ответ и объяснение. - person NVaughan; 09.03.2018