Чтобы лучше распознавать начало и конец вывода в командной строке, я хочу изменить цвет моего приглашения, чтобы он заметно отличался от вывода программы. Поскольку я использую zsh, может ли кто-нибудь мне подсказать?
122
Вот пример того, как установить красную подсказку:
PS1=$'\e[0;31m$ \e[0m'
Магия - это \e[0;31m
(включить красный передний план) и \e[0m
(отключить атрибуты персонажа). Они называются escape-последовательностями. Различные escape-последовательности дают вам разные результаты, от абсолютного позиционирования курсора до цвета, до возможности изменить строку заголовка вашего окна и так далее.
Для получения дополнительной информации о escape-последовательностях см. Статью в Википедии о escape-кодах ANSI.
Поместите это в
~/.zshrc
:Поддерживаемые Цвета:
red
,blue
,green
,cyan
,yellow
,magenta
,black
, иwhite
(из этого ответа ) хотя различные компьютеры могут иметь различные допустимые варианты.Окружайте цветовые коды (и любые другие непечатаемые символы) с помощью
%{....%}
. Это необходимо для правильной работы переноса текста.Кроме того, вот как вы можете заставить это работать с обрезкой каталогов отсюда .
источник
zsh: colors: function definition file not found
%{...%}
означает , что содержание будет интерпретироваться как буквальная управляющей последовательностью, так что курсор обыкновения перемещаться во время печати последовательности. Если вы этого не используете, цветовые коды могут фактически перемещать курсор и создавать нежелательные эффекты. Это задокументировано вVisual Effects
разделе на странице руководства zshmiscZsh имеет встроенные цветные подсказки. Пытаться
а затем
prompt -l
перечисляет доступные подсказки,-p fire
предварительно просматривает подсказку "огонь",-s fire
устанавливает ее.Когда вы будете готовы добавить подсказку, добавьте что-то вроде этого под строкой автозагрузки выше:
источник
Я не думаю, что
autoload -U colors && colors
это больше нужно, и можно просто сделать:для достижения того же результата, что и ответ FireDude . См. Документацию ZSH для получения дополнительной информации.
источник
autoload -U colors && colors
autoload
дальше.autoload on
?autoload -U colors
, это означает, что в вашем дистрибутиве он уже есть в каком-то другом файле инициализации zsh. Вы все равно должны включать его в сценарии, которыми собираетесь поделиться с другими.Доступные цвета:
Доступные переменные:
%F{118}
(От 1 до 256)$FG[018]
(От 1 до 256)$fg[magenta]
(пурпурный, красный, белый, желтый, черный, синий, голубой, зеленый)Пример подсказки:
Установка:
Определение переменных (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
Так, например, следующие две команды
укажите имя хоста оранжевым цветом с черным фоном, за которым следует двоеточие на белом фоне с черным фоном, за которым следует текущий рабочий каталог ярко-синим цветом с черным фоном, за которым следует белый знак доллара с черным фоном.
Более подробную информацию можно найти ниже.
Подсказка с правой стороны. Например, добавление метки времени. См. Https://superuser.com/a/1251045/290299 . Конечно, это может быть цветовая кодировка, например, с каким-нибудь светло-голубым / фиолетовым цветом, например:
Цвета для
ls
. Прочитав руководство для ls, можно, например, активировать цвета дляls
использования следующих двух команд:Наконец, в качестве последнего замечания, которое я не тестировал, поскольку я доволен своей конфигурацией, другой способ может заключаться в том, чтобы кто-то установил порт
coreutils
из MacPorts, а затем использовалgdircolors
(источник: https://unix.stackexchange.com/a/174596 / 194343 ). (Я могу отредактировать эту последнюю часть в будущем, поскольку все вышеперечисленное - связанные части, которые делают повседневную жизнь намного более увлекательной и с которой легче справляться.)источник
Я обнаружил, что с zsh5 (по умолчанию в Debian Jessie) все эти решения работают:
$'\e[00m
$fg[white]
$fg{white}
Теперь у них есть проблема: они будут перемещать курсор, что приведет к некрасивой надписи при переходе по табуляции (для автозаполнения). Решение состоит в том, чтобы просто окружить escape-последовательности символом
%{FOOBAR%}
. Мне потребовалось время, чтобы понять это. Для 2-го и 3-го решенийcolors
модуль загрузки обязателен. Чтобы первое решение оставалось читаемым, просто определите переменные для используемых цветов.источник
Чтобы получить приглашение с цветом в зависимости от статуса выхода последней команды, вы можете использовать это:
Просто добавьте эту строку в свой
~/.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
файл и вызвать функцию, которую вы определили:источник