Как я могу изменить цвет моего приглашения в zsh (отличается от обычного текста)? - PullRequest
79 голосов
/ 27 марта 2009

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

Ответы [ 6 ]

210 голосов
/ 29 марта 2010

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

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

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

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

Кроме того, вот как вы можете заставить это работать с обрезкой каталогов с здесь .

PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
47 голосов
/ 21 декабря 2010

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

autoload -U promptinit && promptinit

и затем prompt -l выводит список доступных подсказок, -p fire просматривает "пожарную" подсказку, -s fire устанавливает ее.

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

prompt fade red
41 голосов
/ 27 марта 2009

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

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

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

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

14 голосов
/ 08 апреля 2011

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

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

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

4 голосов
/ 29 февраля 2016

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

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

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

0 голосов
/ 17 июля 2014

man zshall и поиск ПОДСКАЖИТЕ РАСШИРЕНИЕ

После прочтения существующих ответов здесь некоторые из них противоречат друг другу. Я попробовал различные подходы в системах, работающих под управлением 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.

...