16 màu trong ZShell


11

Tôi dường như chỉ có thể gọi 8 màu trong dấu nhắc zshell của mình.

Thí dụ:

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

Hoạt động tốt. Tuy nhiên,

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

Không hoạt động. Về cơ bản, không có biến thể màu "sáng" nào xuất hiện.

Sau khi thực hiện một số nghiên cứu, tôi thấy rằng màu sắc của zsh được gọi bằng setopt "màu sắc".

đang làm

echo ${(o)color}

mang lại sản lượng này:

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

Như bạn có thể thấy, chỉ có 8 màu tiêu chuẩn có sẵn. Tôi đã thử sử dụng các biến thể "bg-", cũng để lại đầu ra là màu văn bản mặc định.

Bất kỳ trợ giúp bạn có thể cung cấp sẽ được đánh giá rất cao. Tất nhiên, tôi có thể chỉ sử dụng một trong những màu bình thường, nhưng sau đó tôi chẳng học được gì!

Câu trả lời:


9

Trình giả lập thiết bị đầu cuối nào bạn đang sử dụng? Bạn có thể kiểm tra số lượng màu được hỗ trợ bằng cách chạy echotc Co. Ví dụ: tôi urxvthỗ trợ 88 màu, nhưng xtermchỉ hỗ trợ 8 màu và không bao gồm các biến thể sáng.

Nếu tôi chạy nó trong urxvttôi nhận được:

# 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} %.] "

Nguồn: man zshall


4

Tất cả các màu sắc mà bạn đang nói đến chỉ là một chuỗi thoát trong một hình thức \e[{color_code}m. Hàm Zsh colorskhông làm gì thêm sau đó thêm một vài biến mảng kết hợp zsh ánh xạ tên màu có thể đọc được của con người vào chuỗi thoát cuối cùng. Do đó, bạn có thể trực tiếp sử dụng

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

hoặc thử câu trả lời của @Mischa Arefiev, nó dễ đọc hơn. Lưu ý rằng các chuỗi thoát hoạt động trong bất kỳ shell nào, trong khi các cấu trúc như %F{54}...chỉ hoạt động trong zsh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.