Zsh'deki istemimin rengini nasıl değiştirebilirim (normal metinden farklı)?


121

Bir komut satırında çıktının başlangıcını ve sonunu daha iyi tanımak için, istemimin rengini program çıktısından gözle görülür şekilde farklı olacak şekilde değiştirmek istiyorum. Zsh kullandığım için, birisi bana bir ipucu verebilir mi?

Yanıtlar:


59

Kırmızı bilgi isteminin nasıl ayarlanacağına ilişkin bir örnek:

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

Sihir \e[0;31m(kırmızı ön planı aç) ve \e[0m(karakter özelliklerini kapat). Bunlara kaçış dizileri denir. Farklı kaçış dizileri size mutlak imleç konumlandırmasından renge, pencerenizin başlık çubuğunu değiştirebilmenize kadar farklı sonuçlar verir.

Kaçış dizileri hakkında daha fazla bilgi için , ANSI kaçış kodlarındaki wikipedia girişine bakın .


3
.Zshrc dosyamda PROMPT = '[%!]' Kullanıyorum. Nasıl renklendirebilirsin? .Zshrc dosyamda başarısız bir şekilde PROMPT = '\ e [0; 31m [%!] \ E [0m' çalıştırıyorum.
Léo Léopold Hertz 준영

3
@ erikb85: Neden yanlış olduğunu söylüyorsun? Cevabı daha iyi hale getirmek için yapabileceğim bir şey var mı? Benim için yukarıdakileri yapmak bana kırmızı bir dolar işareti veriyor, bu yüzden bunun neden yanlış olduğunu düşündüğünüzü anlamıyorum.
Bryan Oakley

4
Çalışıyor, ancak dizeden önceki $ zshrc'yi hataya çeviriyor. Tabloları kullandığımda metin sol tarafa yerleştirilir. @Joe the Person cevabını tercih ederim
Moebius

1
Katılıyorum @Moebius Bunun çalışmasını istedim, açık ve basitti, ancak
cd'deki

2
Zsh'nin çılgın garip ANSI kaçış şeylerine ihtiyacı olmadığını düşündüm ... daha iyi bir cevap olmalı ...
Charlie Parker

264

Bunu yaz ~/.zshrc:

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

Desteklenen Renkler:
red, blue, green, cyan, yellow, magenta, black, & white(gelen bu yanıt ) farklı bilgisayarlar farklı geçerli seçenekler olabilir rağmen.

Renk kodlarını (ve diğer yazdırılamayan karakterleri) %{....%}. Bu, metin kaydırmanın doğru çalışması içindir.

Ayrıca, burada bu dizin-kırparak ile çalışmak için böyle ulaşır burada .

PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "

3
Kabul edildi, açık ara üstün cevap (neyse ki bu cevap üçüncü Google sonucuydu;)
new123456

3
benim için çalışmıyor. :(zsh: colors: function definition file not found
balki

ZSH4 kullanıyor musunuz? 4.3.11'den daha düşük sürümlerde çalıştığını sanmıyorum. En son sürüme sahipseniz, belki doğru dosyaları kullanmıyordur.
Joe the Person

Geçerli renk değerleri nelerdir?
chakrit

12
%{...%}dizisi baskı sırasında imlecin hareket olmayacak kadar içeriği değişmez bir çıkış dizisi olarak yorumlanacaktır olduğu anlamına gelir. Bunu kullanmazsanız, renk kodları aslında imleci hareket ettirebilir ve istenmeyen etkiler yaratabilir. Bu, zshmisc kılavuz sayfasındakiVisual Effects bölümde belgelenmiştir
Bruno Penteado

69

Zsh, yerleşik renkli istemlerle birlikte gelir. Deneyin

autoload -U promptinit && promptinit

ve sonra prompt -lmevcut istemleri listeler -p fire, "ateş" isteminin önizlemesini yapar, -s fireonu ayarlar.

Bir istem eklemeye hazır olduğunuzda yukarıdaki otomatik yükleme satırının altına şuna benzer bir şey ekleyin:

prompt fade red

Tüm temaları renklendirmenin bir yolu var mı? Ben valslerin isteklerini seviyorum ama kırmızı renkte olmasını isterim.
Pat Myron

25

Artık buna autoload -U colors && colorsihtiyaç olduğunu düşünmüyorum ve biri basitçe yapılabilir:

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

FireDude'un cevabıyla aynı sonucu elde etmek için . Daha fazla bilgi için ZSH belgelerine bakın .


Bilginize. Ubunutu 11.04'te yeni denedim ve renkler benim için işe yaramadıautoload -U colors && colors
dpc.pw

2
Tuhaf. OS X ve Ubuntu 10.04'te benim için çalışıyor.
Andrew Marshall

@Andrew Marshall Evet, ancak autoloadüzerinde çalışması daha olası .
Joe the Person

@ fireDude67 Nasıl ayarlanır autoload on?
balki

1
İhtiyacınız yoksa autoload -U colors, bu, dağıtımınızın başka bir zsh başlatma dosyasında zaten bulunduğu anlamına gelir. Başkalarıyla paylaşmak istediğiniz komut dosyalarına yine de eklemelisiniz.
kindall

23

Mevcut renkler:

for i in {1..256}; do print -P "%F{$i}Color : $i"; done;

                                      


Mevcut Değişkenler:

  • %F{118} (1 ila 256)
  • $FG[018] (1 ila 256)
  • $fg[magenta] (macenta, kırmızı, beyaz, sarı, siyah, mavi, camgöbeği, yeşil)

İstem Örneği:

PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'

Ele geçirmek

PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} ' 

Ele geçirmek


Yüklemek:

Değişken tanımının (PS1 / PROMPT) eklenmesi gerekir ~/.zshrc

Hemen test etmek için mevcut komut isteminde PS1 değişkenini yeniden tanımlayabiliriz (değişiklikler kaydedilmez).


15

Yukarıdaki Bryan Oakley'nin cevabı, daha önce de belirtildiği gibi ve Andrew Marshall tarafından sunulan çözümde aksaklıkları taşımamasına rağmen, yine de kullanılan renkler üzerinde çok fazla özelleştirme yapılmasını açık hale getirmiyor.

MacOS Catalina bundan sonra zsh'nin varsayılan kabuk olmasını istediğinden, birkaç kişinin istemlerini özelleştirmek isteyebileceğini ve bir cevap için buraya gelebileceğini düşünüyorum. Bu yüzden, daha geniş bir özet vermeye ve daha fazla özelleştirmeye izin veren çok yakından ilişkili diğer kavramlara değinmeye çalışacağımı düşündüm.

Çeşitli Renkler için 3 Haneli Kodlar. Öncelikle, burada çeşitli renkler için 3 basamaklı kodlar bulabiliriz: https://unix.stackexchange.com/a/124409/194343 . Örneğin, 214 bir çeşit turuncu renktir.

Ön Plan ve Arka Plan. Diğer önemli bilgi, F oreground ve bac K zemin renkleri için, sırasıyla F ve K ile istediklerini tanımlayabilmesidir . Kaynak, görsel efektlerle ilgili zsh kılavuzudur: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects

Örneğin, aşağıdaki iki komut

autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "

ana bilgisayar adını siyah arka planlı turuncu renkte, ardından siyah arka planlı beyaz iki nokta üst üste, ardından siyah arka planlı parlak mavi geçerli çalışma dizinini ve ardından siyah arka planlı beyaz dolar işaretini sunun.

Daha fazla ilgili bilgi aşağıda bulunur.

Sağ tarafta bilgi istemi. Örneğin, bir zaman damgası eklemek. Bkz https://superuser.com/a/1251045/290299 . Elbette bu renk kodlu olabilir, örneğin bazı açık mavi / morumsu bir renkle, şöyle:

RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"

Renkler ls. Ls için kılavuzu okuduktan sonra, örneğin lsaşağıdaki iki komutu kullanmak için renkleri etkinleştirebilirsiniz :

export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad

Son olarak, yapılandırmamdan memnun olduğum için test etmediğime dair son bir açıklama olarak, başka bir yol, birisinin bağlantı coreutilsnoktasını MacPorts'tan kurması ve sonra kullanması olabilir gdircolors(kaynak: https://unix.stackexchange.com/a/174596 / 194343 ). (Yukarıdakilerin tümü günlük hayatı çok daha eğlenceli ve başa çıkmayı kolaylaştıran ilgili parçalar olduğundan, bu son bölümü gelecekte düzenleyebilirim.)


1
Bu son derece yararlı bir cevap. Bunu bir araya getirdiğin için teşekkürler.
shaunakde

@shaunakde Hoş geldiniz! :)
MightyMouse

4

Zsh5 (Debian Jessie'de varsayılan olan) ile tüm bu çözümlerin çalıştığını buldum:

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

Şimdi, bir problemleri var: İmleci hareket ettirecekler ve sekme sırasında çirkin bir çıkartmaya neden olacaklar (otomatik tamamlama için). Çözüm basitçe kaçış dizilerini çevrelemektir %{FOOBAR%}. Bunu anlamam biraz zaman aldı. 2. ve 3. çözümler için yükleme colorsmodülü zorunludur. 1. çözümü okunabilir tutmak için, kullandığınız renkler için değişkenler tanımlamanız yeterlidir.


2

Son komutun çıkış durumuna bağlı olarak bir renk istemi almak için şunu kullanabilirsiniz:

PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'

Sadece bu satırı ~/.zshrc.

Dokümantasyon olası tutucuları listeler.


Buradaki en iyi çözüm bu, çok teşekkür ederim.
Eddy Ekofo

2

Favorimi dene: koy

~/.zshrc

bu hat:

PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'

unutma

source ~/.zshrc

değişiklikleri test etmek için

tabii ki renkleri / renk kodlarını değiştirebilirsiniz :-)


0

man zshall ve hızlı genişleme için arama

Buradaki mevcut cevapları okuduktan sonra, birkaçı çelişkili. Zsh 4.2 ve 5+ çalıştıran sistemlerde çeşitli yaklaşımları denedim ve bu yanıtların çelişkili olmasının nedeninin, ZSH'nin hangi sürümünü hedeflediklerini söylememeleri olduğunu gördüm. Farklı sürümler bunun için farklı sözdizimi kullanır ve bazıları çeşitli otomatik yüklemeler gerektirir.

Bu nedenle, en iyi bahis muhtemelen zshall'a bakmak ve sizin özel zsh kurulumunuz için tüm kuralları bulmak için İSTENMELİ GENİŞLETME'yi aramaktır. Yorumlarda, "Ubuntu 11.04 veya 10.4 veya OSX kullanıyorum" gibi şeyler, ZSH'nin hangi sürümünü kullandığınız belirsiz olduğundan çok anlamlı değildir. Ubuntu 11.04, ubuntu 10.04'ten daha yeni bir ZSH sürümü anlamına gelmez. Daha eski bir sürümün kurulmasının birçok nedeni olabilir. Bu nedenle ZSH'nin daha yeni bir sürümü, ZSH'nin hangi sürümü olduğunu bilmeden hangi sözdiziminin kullanılacağı anlamına gelmez.


0

Yukarıdaki yanıtların tümünü tamamlamak için başka bir kullanışlı numara, renkli komut istemi ayarlarını bir zsh işlevine yerleştirmektir. Orada, daha uzun komutlara takma ad vermek için yerel değişkenler tanımlayabilir, örneğin rc=$reset_colorkendi renk değişkenlerinizi tanımlayabilirsiniz. .zshrcDosyanıza yerleştirmeyi ve tanımladığınız işlevi çağırmayı unutmayın :

# 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.