저는 프롬프트에서 precmd
색상이 지정된 상태를 생성하는 데 사용합니다.git
. 와 유사한 문자열을 생성하고 %F{green}master%f%F{red}%f
.에 할당합니다 $psvar[1]
.
내 팁에는 %1v
텍스트 표시가 포함됩니다.
그러나 녹색과 빨간색 텍스트가 아닌 할당된 리터럴 값이 표시됩니다.
zsh
내용을 파싱 할 수 있는 방법이 있나요 $psvar
?
답변1
힌트 확장은 재귀적이지 않습니다. 프롬프트에는 이 있으므로 %1v
콘텐츠가 $psvar[1]
프롬프트에 삽입됩니다.
에 프롬프트 확장 지시어를 넣지 말고 $psvar
대신 프롬프트 내용을 넣으세요. 색상을 변경하려면 터미널 이스케이프 시퀀스를 삽입하세요. 당신은 그것을 사용할 수 있습니다colors
그런 이유로.
autoload -U colors
colors
… {
psvar[1]="$fg[green]$branch$fg[default]"
}
답변2
%-expandos의 결과는 다시 확장되지 않으므로 삽입된 내용은
%v
최종 프롬프트에 문자 그대로 나타납니다.
그래서 유일한 방법은 set -o prompt_subst
.