Ответы:
Вот пример того, как установить красную подсказку:
PS1=$'\e[0;31m$ \e[0m'
Магия - это \e[0;31m
(включить красный передний план) и \e[0m
(отключить атрибуты персонажа). Они называются escape-последовательностями. Различные escape-последовательности дают вам разные результаты, от абсолютного позиционирования курсора до цвета, до возможности изменить строку заголовка вашего окна и так далее.
Для получения дополнительной информации о escape-последовательностях см. Статью в Википедии о escape-кодах ANSI.
Поместите это в ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Поддерживаемые Цвета:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, и white
(из этого ответа ) хотя различные компьютеры могут иметь различные допустимые варианты.
Окружайте цветовые коды (и любые другие непечатаемые символы) с помощью %{....%}
. Это необходимо для правильной работы переноса текста.
Кроме того, вот как вы можете заставить это работать с обрезкой каталогов отсюда .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
означает , что содержание будет интерпретироваться как буквальная управляющей последовательностью, так что курсор обыкновения перемещаться во время печати последовательности. Если вы этого не используете, цветовые коды могут фактически перемещать курсор и создавать нежелательные эффекты. Это задокументировано в Visual Effects
разделе на странице руководства zshmisc
Zsh имеет встроенные цветные подсказки. Пытаться
autoload -U promptinit && promptinit
а затем prompt -l
перечисляет доступные подсказки, -p fire
предварительно просматривает подсказку "огонь", -s fire
устанавливает ее.
Когда вы будете готовы добавить подсказку, добавьте что-то вроде этого под строкой автозагрузки выше:
prompt fade red
Я не думаю, что autoload -U colors && colors
это больше нужно, и можно просто сделать:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
для достижения того же результата, что и ответ FireDude . См. Документацию ZSH для получения дополнительной информации.
autoload -U colors && colors
autoload
дальше.
autoload on
?
autoload -U colors
, это означает, что в вашем дистрибутиве он уже есть в каком-то другом файле инициализации zsh. Вы все равно должны включать его в сценарии, которыми собираетесь поделиться с другими.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(От 1 до 256)$FG[018]
(От 1 до 256)$fg[magenta]
(пурпурный, красный, белый, желтый, черный, синий, голубой, зеленый)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
Определение переменных (PS1 / PROMPT) необходимо добавить в ~/.zshrc
Мы также можем переопределить переменную PS1 в текущем приглашении, чтобы сразу проверить ее (изменения не сохраняются).
Ответ Брайана Окли выше имеет сбой, как уже указывалось, и решение, предложенное Эндрю Маршаллом, хотя оно и не несет сбоя, тем не менее, оно не делает его очевидным из-за слишком большой настройки используемых цветов.
Поскольку macOS Catalina теперь требует, чтобы zsh был оболочкой по умолчанию, я думаю, что еще несколько человек могут захотеть настроить свое приглашение и, возможно, придут сюда за ответом. Итак, я подумал, что попытаюсь дать более широкое резюме и коснуться других очень тесно связанных понятий, которые позволяют больше настраивать.
Трехзначные коды для различных цветов. Прежде всего, здесь мы можем найти трехзначные коды для разных цветов: https://unix.stackexchange.com/a/124409/194343 . Например, 214 - это какой-то оранжевый цвет.
Передний план и задний план. Другая ключевая информация заключается в том, что для основных цветов F oreground и bac K можно определить, что они хотят, с помощью F и K соответственно. Источник - руководство по визуальным эффектам zsh: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
Так, например, следующие две команды
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
укажите имя хоста оранжевым цветом с черным фоном, за которым следует двоеточие на белом фоне с черным фоном, за которым следует текущий рабочий каталог ярко-синим цветом с черным фоном, за которым следует белый знак доллара с черным фоном.
Более подробную информацию можно найти ниже.
Подсказка с правой стороны. Например, добавление метки времени. См. Https://superuser.com/a/1251045/290299 . Конечно, это может быть цветовая кодировка, например, с каким-нибудь светло-голубым / фиолетовым цветом, например:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Цвета для ls
. Прочитав руководство для ls, можно, например, активировать цвета для ls
использования следующих двух команд:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Наконец, в качестве последнего замечания, которое я не тестировал, поскольку я доволен своей конфигурацией, другой способ может заключаться в том, чтобы кто-то установил порт coreutils
из MacPorts, а затем использовал gdircolors
(источник: https://unix.stackexchange.com/a/174596 / 194343 ). (Я могу отредактировать эту последнюю часть в будущем, поскольку все вышеперечисленное - связанные части, которые делают повседневную жизнь намного более увлекательной и с которой легче справляться.)
Я обнаружил, что с zsh5 (по умолчанию в Debian Jessie) все эти решения работают:
$'\e[00m
$fg[white]
$fg{white}
Теперь у них есть проблема: они будут перемещать курсор, что приведет к некрасивой надписи при переходе по табуляции (для автозаполнения). Решение состоит в том, чтобы просто окружить escape-последовательности символом %{FOOBAR%}
. Мне потребовалось время, чтобы понять это. Для 2-го и 3-го решений colors
модуль загрузки обязателен. Чтобы первое решение оставалось читаемым, просто определите переменные для используемых цветов.
Чтобы получить приглашение с цветом в зависимости от статуса выхода последней команды, вы можете использовать это:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Просто добавьте эту строку в свой ~/.zshrc
.
В документации перечислены возможные заполнители.
Попробуйте мой любимый: вставьте
~/.zshrc
эта строка:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
не забывай
source ~/.zshrc
проверить изменения
вы, конечно, можете изменить цвета / цветовые коды :-)
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.
Чтобы дополнить все вышеперечисленные ответы, еще один удобный прием - поместить настройки цветных подсказок в функцию zsh. Там вы можете определить локальные переменные для псевдонимов более длинных команд, например, rc=$reset_color
или определить свои собственные цветовые переменные. Не забудьте поместить его в свой .zshrc
файл и вызвать функцию, которую вы определили:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt