[unix] ZShell의 16 가지 색상

zshell 프롬프트에서 8 색만 호출 할 수있는 것 같습니다.

예:

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

잘 작동합니다. 하나,

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

작동하지 않습니다. 기본적으로 “밝은”색상 변형은 나타나지 않습니다.

약간의 연구를 한 결과, zsh의 색상은 “colors”setopt에 의해 호출됩니다.

하기

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-“변형을 사용하여 출력을 기본 텍스트 색상으로 남겨 두었습니다.

당신이 제공 할 수있는 도움은 대단히 감사하겠습니다. 물론 정상적인 색상 중 하나를 사용할 수는 있지만 아무것도 배울 수 없습니다!



답변

어떤 터미널 에뮬레이터를 사용하고 있습니까? 을 실행하여 지원되는 색상 수를 확인할 수 있습니다 echotc Co. 예를 들어, 내 urxvt88 색을 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


답변

당신이 말하는 모든“색”은 단지 형식의 이스케이프 시퀀스입니다 \e[{color_code}m. Zsh 함수 colors는 사람이 읽을 수있는 색상 이름을 터미널 이스케이프 시퀀스에 매핑하는 몇 개의 zsh 연관 배열 변수를 추가하는 것 이상을 수행 하지 않습니다. 따라서 직접 사용할 수 있습니다

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

또는 @Mischa Arefiev의 답변을 시도해보십시오. 더 읽기 쉽습니다. 이스케이프 시퀀스는 모든 셸에서 %F{54}...작동 하지만 구성 은 zsh에서만 작동합니다.


답변