2009-03-27 5 views

Odpowiedz

38

Oto przykład, w jaki sposób ustawić czerwony wiersz:

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

Magia jest \e[0;31m (skręcić na czerwonym pierwszym planie) i \e[0m (wyłącz charakter atrybutów). Są to tak zwane sekwencje specjalne. Różne sekwencje specjalne dają różne wyniki, od bezwzględnego pozycjonowania kursora, poprzez kolor, po możliwość zmiany paska tytułu okna i tak dalej.

Więcej na sekwencje, patrz the wikipedia entry on ANSI escape codes

+1

Dziękuję za pomoc, która pomaga. – Mnementh

+0

Używam PROMPT = "[%!]" W moim .zshrc. Jak możesz to pokolorować? Uruchomiłem bez powodzenia PROMPT = '\ e [0; 31m [%!] \ E [0m' w moim .zshrc. –

+1

@Masi wypróbuj $ 'string' – balki

189

umieścić to w ~/.zshrc:

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

Obsługiwane Kolory:
czerwony, niebieski, zielony, błękitny, żółty, magenta, czarny & Biały (z this answer), chociaż różne komputery mogą mieć różne prawidłowe opcje.

Kody kolorów surround (i wszelkie inne znaki niedrukowalne) z %{....%}. Jest tak, aby zawijanie tekstu działało poprawnie.

+3

Uzgodniono, zdecydowanie najlepszą odpowiedź (na szczęście ta odpowiedź była trzecim wynikiem Google ;) – new123456

+2

nie działa dla mnie. :( 'zsh: kolory: plik definicji funkcji nie został znaleziony' – balki

+0

Używasz ZSH4? Nie sądzę, że działa on w wersjach mniejszych niż 4.3.11. Jeśli masz najnowszą wersję może to nie używa odpowiednich plików. –

41

Zsh ma wbudowane kolorowe monity. Spróbuj

autoload -U promptinit && promptinit 

a następnie prompt -l wymienia dostępne monitowania -p fire zapowiedzi "ognia" polecenia, -s fire ustawia go.

Gdy jesteś gotowy, aby dodać wiersz dodać coś jak ten poniżej linii autoload powyżej:

prompt fade red 
+1

Nie wiedziałem o tym, dziękuję –

+1

Plus jeden za pokazanie oficjalnego sposobu: – Lokesh

+0

Czy istnieje sposób na kolorowanie wszystkich motywów? lubisz to na czerwono. –

14

Nie sądzę autoload -U colors && colors jest już potrzebne i można po prostu zrobić:

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

, aby osiągnąć ten sam wynik, co FireDude's answer. Zobacz ZSH documentation, aby uzyskać więcej informacji.

+0

FYI. Właśnie próbowałem w Ubunutu 11.04 i kolory nie działały dla mnie bez 'autoload -U colors && colors' –

+1

Weird. Działa dla mnie na OS X i Ubuntu 10.04. –

+0

@Andrew Marshall Tak, ale jest bardziej prawdopodobne, że będzie działać z 'autoload'. –

0

człowiek zshall i szukać do niezwłocznego ROZBUDOWY

Po przeczytaniu istniejących odpowiedzi tutaj, kilka z nich są sprzeczne. Próbowałem różnych podejść do systemów działających z Zsh 4.2 i 5+ i odkryłem, że powodem, dla którego te odpowiedzi są sprzeczne, jest to, że nie określają, z której wersji ZSH są skierowane. Różne wersje używają różnych składni, a niektóre z nich wymagają różnych autoload.

Najlepszym rozwiązaniem jest prawdopodobnie zshall i wyszukanie PROMPT EXPANSION, aby poznać wszystkie zasady dotyczące konkretnej instalacji zsh. Uwaga w komentarzach, takie rzeczy jak "Używam Ubuntu 11.04 lub 10.4 lub OSX" Nie są zbyt znaczące, ponieważ nie jest jasne, której wersji ZSH używasz. Ubuntu 11.04 nie implikuje nowszej wersji ZSH niż Ubuntu 10.04. Może istnieć wiele przyczyn zainstalowania starszej wersji. W tym przypadku nowsza wersja ZSH nie implikuje, której składni użyć, nie wiedząc, która wersja ZSH jest.

3

I odkryli, że z zsh5 (domyślnie jeden na Debianie Jessie), wszystkie te rozwiązania działa:

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

Teraz mają problem: przesuwają kursor, powodując brzydkie naklejenie podczas zakładania (dla automatycznego uzupełniania). Rozwiązaniem jest po prostu otoczyć sekwencje specjalne za pomocą %{FOOBAR%}. Zajęło mi trochę czasu, aby to zrozumieć. Dla rozwiązań 2. i 3. ładowanie modułu colors jest obowiązkowe. Aby zachować czytelność pierwszego rozwiązania, wystarczy zdefiniować zmienne dla używanych kolorów.

Powiązane problemy