16 สีใน ZShell


11

ฉันดูเหมือนจะสามารถเรียก 8 สีในพร้อมท์ zshell ของฉัน

ตัวอย่าง:

PROMPT="[%n@%{$fg[magenta]%}%m%{$reset_color%} %.]
%# "

ทำงานได้ดี อย่างไรก็ตาม

PROMPT="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.]
%# "

ใช้งานไม่ได้ โดยทั่วไปจะไม่มีการเปลี่ยนแปลงของสี "สว่าง"

หลังจากทำการวิจัยบางอย่างฉันพบว่าสีของ zsh ถูกเรียกโดย setopt "colours"

การทำ

echo ${(o)color}

ให้ผลลัพธ์นี้:

00 01 02 03 04 05 07 08 22 23 24 25 27 28 30 30 30 30 31 31 32 32 33 33 34 34 35 35 36 36
37 37 39 39 40 40 41 42 43 44 45 46 47 49 bg-black bg-blue bg-cyan bg-default bg-green
bg-magenta bg-red bg-white bg-yellow black blink blue bold conceal cyan default faint green
magenta no-blink no-conceal no-reverse no-standout no-underline none normal red reverse
standout underline white yellow

อย่างที่คุณเห็นมีเพียง 8 สีมาตรฐานเท่านั้น ฉันได้ลองใช้รูปแบบ "bg-" ซึ่งยังคงเอาท์พุทเป็นสีข้อความเริ่มต้น

ความช่วยเหลือใด ๆ ที่คุณสามารถให้จะได้รับการชื่นชมอย่างมาก แน่นอนฉันทำได้เพียงใช้สีปกติ แต่แล้วฉันก็ไม่ได้เรียนรู้อะไรเลย!

คำตอบ:


9

คุณใช้เทอร์มินัลอีมูเลเตอร์ใด? echotc Coคุณสามารถตรวจสอบจำนวนสีที่ได้รับการสนับสนุนโดยการเรียกใช้ ตัวอย่างเช่นฉันurxvtรองรับ 88 สี แต่xtermรองรับเพียง 8 และไม่รวมรูปแบบที่สว่าง

ถ้าฉันเรียกใช้ในurxvtฉันได้รับ:

# Dark magenta/violet:
PS1="[%F{34}%n%F{reset}@%F{magenta}%m%F{reset} %.] " 
# Bright Thistle purple:
PS1="[%F{54}%n%F{reset}@%F{magenta}%m%F{reset} %.] "

แหล่งที่มา: man zshall


4

ทั้งหมด“สี” \e[{color_code}mคุณกำลังพูดถึงเป็นเพียงการลำดับหนีในรูปแบบ ฟังก์ชั่น Zsh colorsไม่ทำอะไรมากไปกว่านั้นแล้วเพิ่มตัวแปรอาเรย์เชื่อมโยง zsh สองสามตัวที่จับคู่ชื่อสีที่มนุษย์สามารถอ่านได้เข้ากับลำดับการหลบหนีเทอร์มินัล ดังนั้นคุณสามารถใช้โดยตรง

PS1=%{$'\e[54m'%}...

หรือลองใช้คำตอบของ @Mischa Arefiev อ่านได้ง่ายขึ้น โปรดทราบว่า escape sequences นั้นใช้งานได้ในเชลล์ใด ๆ ในขณะที่การก่อสร้างเช่น%F{54}...ทำงานเฉพาะใน zsh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.