Aby lepiej rozpoznawać początek i koniec danych wyjściowych w wierszu poleceń, chcę zmienić kolor mojego znaku zachęty, tak aby wyraźnie różnił się od wyników programu. Czy ktoś może mi podpowiedzieć, gdy używam zsh?
121
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
:Obsługiwane Kolory:
red
,blue
,green
,cyan
,yellow
,magenta
,black
, iwhite
(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 .
źródło
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 wVisual Effects
sekcji na stronie podręcznika zshmiscZsh posiada wbudowane kolorowe podpowiedzi. Próbować
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:
źródło
Nie sądzę, że
autoload -U colors && colors
jest to już potrzebne i można po prostu zrobić:aby osiągnąć ten sam rezultat, co odpowiedź FireDude . Więcej informacji można znaleźć w dokumentacji ZSH .
źródło
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.Dostępne kolory:
Dostępne zmienne:
%F{118}
(Od 1 do 256)$FG[018]
(Od 1 do 256)$fg[magenta]
(magenta, czerwony, biały, żółty, czarny, niebieski, cyjan, zielony)Przykład podpowiedzi:
Zainstalować:
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).
źródło
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
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:
Kolory dla
ls
. Po przeczytaniu instrukcji ls, można na przykład aktywować kolory dols
użycia następujących dwóch poleceń: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życiegdircolors
(ź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).źródło
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ązaniacolors
moduł ładowania jest obowiązkowy. Aby pierwsze rozwiązanie było czytelne, wystarczy zdefiniować zmienne dla używanych kolorów.źródło
Aby uzyskać monit w kolorze zależnym od statusu wyjścia ostatniego polecenia, możesz użyć tego:
Po prostu dodaj tę linię do swojego
~/.zshrc
.Dokumentacja zawiera listę możliwych zastępczych.
źródło
Wypróbuj moje ulubione: włóż
ta linia:
nie zapomnij
aby przetestować zmiany
oczywiście można zmienić kolory / kody kolorów :-)
źródło
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.
źródło
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ę:źródło