Odpowiedzi:
Oto przykład, jak ustawić czerwony monit:
PS1=$'\e[0;31m$ \e[0m'
Magia polega na \e[0;31m
(włącz czerwony pierwszy plan) i \e[0m
(wyłącz atrybuty postaci). Nazywa się to sekwencjami ucieczki. Różne sekwencje ucieczki dają różne wyniki, od bezwzględnego pozycjonowania kursora, przez kolor, po możliwość zmiany paska tytułu okna i tak dalej.
Aby uzyskać więcej informacji na temat sekwencji ucieczki, zobacz wpis Wikipedii dotyczący kodów ucieczki ANSI
Umieść to w ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Obsługiwane Kolory:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, i white
(z tej odpowiedzi ), choć różne komputery mogą mieć różne ważne opcje.
Kody kolorów otaczających (i wszelkie inne niedrukowalne znaki) z %{....%}
. Ma to na celu poprawne działanie zawijania tekstu.
Dodatkowo, oto jak możesz to zrobić z przycinaniem katalogów z tego miejsca .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
oznacza, że zawartość będzie interpretowane jako dosłownym sekwencji sterującej, to kursor przyzwyczajenie porusza się podczas drukowania sekwencji. Jeśli tego nie używasz, kody kolorów mogą w rzeczywistości przesuwać kursor i powodować niepożądane efekty. Jest to udokumentowane w Visual Effects
sekcji na stronie podręcznika zshmisc
Zsh posiada wbudowane kolorowe podpowiedzi. Próbować
autoload -U promptinit && promptinit
a następnie prompt -l
wyświetla listę dostępnych podpowiedzi, wyświetla -p fire
podgląd zachęty „ogień”, -s fire
ustawia ją.
Kiedy jesteś gotowy, aby dodać monit, dodaj coś takiego poniżej linii automatycznego ładowania powyżej:
prompt fade red
Nie sądzę, że autoload -U colors && colors
jest to już potrzebne i można po prostu zrobić:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
aby osiągnąć ten sam rezultat, co odpowiedź FireDude . Więcej informacji można znaleźć w dokumentacji ZSH .
autoload -U colors && colors
autoload
na.
autoload on
?
autoload -U colors
, oznacza to, że Twoja dystrybucja ma już go w innym pliku inicjującym zsh. Nadal powinieneś uwzględniać to w skryptach, którymi chcesz się podzielić z innymi.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(Od 1 do 256)$FG[018]
(Od 1 do 256)$fg[magenta]
(magenta, czerwony, biały, żółty, czarny, niebieski, cyjan, zielony)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%} '
Definicję zmiennych (PS1 / PROMPT) należy dodać do ~/.zshrc
Równie dobrze możemy ponownie zdefiniować zmienną PS1 w bieżącym monicie, aby od razu ją przetestować (zmiany nie są zapisywane).
Powyższa odpowiedź Bryana Oakleya zawiera usterkę, na którą już zwrócono uwagę, a rozwiązanie zaproponowane przez Andrew Marshalla, choć nie ma usterki, nie oznacza jednak, że jest ona oczywista ze względu na zbyt duże dostosowanie kolorów.
Ponieważ macOS Catalina prosi, aby zsh był odtąd domyślną powłoką, myślę, że kilka innych osób może chcieć dostosować swój monit i może przyjść tutaj po odpowiedź. Pomyślałem więc, że spróbuję podać szersze podsumowanie i poruszyć inne bardzo powiązane pojęcia, które pozwalają na większą personalizację.
3-cyfrowe kody dla różnych kolorów. Przede wszystkim możemy znaleźć tutaj 3-cyfrowe kody dla różnych kolorów: https://unix.stackexchange.com/a/124409/194343 . Na przykład 214 to jakiś pomarańczowy kolor.
Pierwszy plan i tło. Drugą kluczową informacją jest to, że dla F oreground i bac K naziemnych kolorów można określić to, co chcą z F i K odpowiednio. Źródłem jest podręcznik zsh dotyczący efektów wizualnych: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
Na przykład następujące dwa polecenia
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
przedstaw nazwę hosta w kolorze pomarańczowym z czarnym tłem, po którym następuje dwukropek w kolorze białym z czarnym tłem, a następnie bieżący katalog roboczy w kolorze jasnoniebieskim z czarnym tłem, a następnie biały znak dolara z czarnym tłem.
Więcej powiązanych informacji znajduje się poniżej.
Szybkie informacje po prawej stronie. Na przykład dodanie sygnatury czasowej. Zobacz https://superuser.com/a/1251045/290299 . Oczywiście można to oznaczyć kolorami, na przykład jakimś jasnoniebieskim / fioletowym kolorem, na przykład:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Kolory dla ls
. Po przeczytaniu instrukcji ls, można na przykład aktywować kolory do ls
użycia następujących dwóch poleceń:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Na koniec ostatnia uwaga, której nie testowałem, ponieważ jestem zadowolony z mojej konfiguracji, inną drogą może być dla kogoś zainstalowanie portu coreutils
z MacPorts, a następnie użycie gdircolors
(źródło: https://unix.stackexchange.com/a/174596 / 194343 ). (Mogę edytować tę ostatnią część w przyszłości, ponieważ wszystkie powyższe są powiązane elementy, które sprawiają, że codzienne życie jest o wiele przyjemniejsze i łatwiejsze w radzeniu sobie z nimi).
Odkryłem, że w przypadku zsh5 (domyślnego w Debianie Jessie) wszystkie te rozwiązania działają:
$'\e[00m
$fg[white]
$fg{white}
Teraz mają problem: przesuwają kursor, powodując brzydką naklejkę podczas przechodzenia w tabulator (do automatycznego uzupełniania). Rozwiązaniem jest po prostu otoczenie sekwencji ucieczki %{FOOBAR%}
. Zajęło mi trochę czasu, zanim to zrozumiałem. W przypadku drugiego i trzeciego rozwiązania colors
moduł ładowania jest obowiązkowy. Aby pierwsze rozwiązanie było czytelne, wystarczy zdefiniować zmienne dla używanych kolorów.
Aby uzyskać monit w kolorze zależnym od statusu wyjścia ostatniego polecenia, możesz użyć tego:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Po prostu dodaj tę linię do swojego ~/.zshrc
.
Dokumentacja zawiera listę możliwych zastępczych.
Wypróbuj moje ulubione: włóż
~/.zshrc
ta linia:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
nie zapomnij
source ~/.zshrc
aby przetestować zmiany
oczywiście można zmienić kolory / kody kolorów :-)
man zshall i wyszukaj SZYBKIE ROZSZERZENIE
Po przeczytaniu istniejących tutaj odpowiedzi kilka z nich jest sprzecznych. Wypróbowałem różne podejścia na systemach zsh 4.2 i 5+ i odkryłem, że powodem, dla którego te odpowiedzi są sprzeczne, jest to, że nie mówią, do której wersji ZSH są skierowane. Różne wersje używają do tego różnej składni, a niektóre z nich wymagają różnych automatycznych ładowań.
Więc prawdopodobnie najlepszym rozwiązaniem jest skorzystanie z polecenia man zshall i wyszukanie hasła PROMPT EXPANSION, aby poznać wszystkie zasady dotyczące konkretnej instalacji zsh. Uwaga w komentarzach, takie rzeczy jak „Używam Ubuntu 11.04, 10.4 lub OSX” nie mają zbyt dużego znaczenia, ponieważ nie jest jasne, której wersji ZSH używasz. Ubuntu 11.04 nie oznacza nowszej wersji ZSH niż ubuntu 10.04. Może istnieć wiele powodów, dla których została zainstalowana starsza wersja. W związku z tym nowsza wersja ZSH nie sugeruje, której składni użyć, nie wiedząc, która to wersja ZSH.
Aby uzupełnić wszystkie powyższe odpowiedzi, inną wygodną sztuczką jest umieszczenie kolorowych podpowiedzi w funkcji zsh. Tam możesz zdefiniować zmienne lokalne, aby aliasować dłuższe polecenia, np. rc=$reset_color
Lub zdefiniować własne zmienne kolorów. Nie zapomnij umieścić go w swoim .zshrc
pliku i wywołać zdefiniowaną przez siebie funkcję:
# 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