Как изменить цвет моего приглашения в zsh (отличается от обычного текста)?

Чтобы лучше узнать начало и конец вывода в командной строке, я хочу изменить цвет моего приглашения, чтобы он заметно отличался от вывода программ. Как я использую zsh, может ли кто-нибудь дать мне подсказку?

+68
27 мар. '09 в 13:29
источник поделиться
6 ответов

Вот пример того, как установить красное приглашение:

PS1=$'\e[0;31m$ \e[0m'

Магия - это \e[0;31m (включить красный передний план) и \e[0m (отключить атрибуты символов). Они называются escape-последовательностями. Различные escape-последовательности дают вам разные результаты: от абсолютного позиционирования курсора до цвета, от возможности изменить строку заголовка вашего окна и т.д.

Подробнее о escape-последовательностях см. запись в википедии в escape-кодах ANSI

+36
27 мар. '09 в 13:41
источник

Поместите это в ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "

Поддерживаемые цвета:
Красный, синий, зеленый, голубой, желтый, пурпурный, черный и белый (от этот ответ), хотя разные компьютеры могут иметь разные допустимые варианты.

Коды цвета окружающего звука (и любые другие непечатаемые символы) с %{....%}. Это для корректной работы текстовой упаковки.

+189
28 мар. '10 в 21:37
источник

Zsh поставляется с цветными подсказками. Попробуйте

autoload -U promptinit && promptinit

а затем prompt -l перечисляет доступные приглашения, -p fire превью на приглашение "огонь", -s fire устанавливает его.

Когда вы будете готовы добавить приглашение добавить что-то вроде этого ниже строки автозагрузки выше:

prompt fade red
+38
21 дек. '10 в 0:32
источник

Я не думаю, что autoload -U colors && colors больше нужен, и можно просто сделать:

PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "

для достижения того же результата, что и ответ FireDude. Дополнительную информацию см. В документации ZSH.

+14
08 апр. '11 в 7:54
источник

Я обнаружил, что с zsh5 (по умолчанию на Debian Jessie) все эти решения работают:

  • $'\e[00m
  • $fg[white]
  • $fg{white}

Теперь у них есть проблема: они будут перемещать курсор, что приводит к уродливой надписи при табуляции (для автозаполнения). Решение состоит в том, чтобы окружить escape-последовательности с помощью %{FOOBAR%}. Понадобился время, чтобы понять это. Для 2-го и 3-го решений требуется загрузка модуля colors. Чтобы оставить 1-е решение доступным для чтения, просто определите переменные для цветов, которые вы используете.

+3
29 февр. '16 в 10:30
источник

man zshall и поиск PROMPT EXPANSION

Прочитав существующие ответы здесь, некоторые из них конфликтуют. Я пробовал различные подходы к системам, работающим с zsh 4.2 и 5+, и обнаружил, что причина, по которой эти ответы противоречат друг другу, заключается в том, что они не говорят, к какой версии ZSH они нацелены. В разных версиях для этого используется другой синтаксис, а для некоторых из них требуются различные автозагрузки.

Итак, лучший вариант, вероятно, для человека zshall и поиск PROMPT EXPANSION, чтобы узнать все правила для вашей конкретной установки zsh. Обратите внимание на комментарии, такие вещи, как "Я использую Ubuntu 11.04 или 10.4 или OSX". Не очень значимы, поскольку неясно, какая версия ZSH вы используете. Ubuntu 11.04 не подразумевает более новую версию ZSH, чем Ubuntu 10.04. Может быть несколько причин, по которым была установлена ​​более старая версия. В этом случае более новая версия ZSH не подразумевает, какой синтаксис использовать, не зная, какая версия ZSH она есть.

0
17 июл. '14 в 16:02
источник

Посмотрите другие вопросы по меткам или Задайте вопрос