zsh 프롬프트에서 %F{color}와 %{$fg[color]%}의 차이점

zsh 프롬프트에서 %F{color}와 %{$fg[color]%}의 차이점

프롬프트에서 전경색을 설정하는 방법에는 두 가지가 있다는 것을 알았습니다 zsh.

PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'

$두 라인 모두 힌트로 파란색을 생성합니다 . 이 둘 사이에 차이점이 있나요? 프롬프트를 설정하는 데 선호되는 방법이 있나요?

색상 코드를 지정하려면 $F{160}또는 다른 숫자를 지정할 수 있지만 는 지정할 수 없습니다 %{$fg[160]%}. 이것이 두 옵션의 유일한 차이점입니까?

답변1

직접 %F{...}이스케이프는 zsh C 코드에 의해 직접 처리됩니다. 용도는 $fg[blue]라는 연관 배열에 액세스하는 것입니다 fg. 이렇게 하려면 colorszsh와 함께 제공되는 함수를 호출해야 합니다. 이 PROMPT_SUBST옵션 에도 의존하는 힌트입니다 .

이 두 가지 방법으로 얻은 결과는 크게 다르지 않습니다. 전자는 더 깨끗하고 zsh의 터미널 상태 추적과 더 잘 작동합니다. 2008년에 zsh에 추가되었고, 1999년에 색상 기능이 추가되었습니다. 요즘에는 단일 기능이 부족하기에는 너무 오래된 zsh를 계속 사용하지 않을 것이므로 이전 방식을 고수할 필요가 없습니다.

알다시피 %F터미널은 88색 또는 256색을 지원하는 숫자를 처리할 수 있습니다. 최신 버전의 zsh를 실행하는 경우, 예를 들어 %F{#0000ff}트루 컬러 터미널이 있는 경우(또는 zsh/nearcolor 모듈을 로드하는 경우) 16진수 삼중을 지정할 수도 있습니다 .

관련 정보