프롬프트에서 전경색을 설정하는 방법에는 두 가지가 있다는 것을 알았습니다 zsh
.
PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'
$
두 라인 모두 힌트로 파란색을 생성합니다 . 이 둘 사이에 차이점이 있나요? 프롬프트를 설정하는 데 선호되는 방법이 있나요?
색상 코드를 지정하려면 $F{160}
또는 다른 숫자를 지정할 수 있지만 는 지정할 수 없습니다 %{$fg[160]%}
. 이것이 두 옵션의 유일한 차이점입니까?
답변1
직접 %F{...}
이스케이프는 zsh C 코드에 의해 직접 처리됩니다. 용도는 $fg[blue]
라는 연관 배열에 액세스하는 것입니다 fg
. 이렇게 하려면 colors
zsh와 함께 제공되는 함수를 호출해야 합니다. 이 PROMPT_SUBST
옵션 에도 의존하는 힌트입니다 .
이 두 가지 방법으로 얻은 결과는 크게 다르지 않습니다. 전자는 더 깨끗하고 zsh의 터미널 상태 추적과 더 잘 작동합니다. 2008년에 zsh에 추가되었고, 1999년에 색상 기능이 추가되었습니다. 요즘에는 단일 기능이 부족하기에는 너무 오래된 zsh를 계속 사용하지 않을 것이므로 이전 방식을 고수할 필요가 없습니다.
알다시피 %F
터미널은 88색 또는 256색을 지원하는 숫자를 처리할 수 있습니다. 최신 버전의 zsh를 실행하는 경우, 예를 들어 %F{#0000ff}
트루 컬러 터미널이 있는 경우(또는 zsh/nearcolor 모듈을 로드하는 경우) 16진수 삼중을 지정할 수도 있습니다 .