나는 나만의 프롬프트를 만드는 것을 좋아합니다. 또한 나는 그것들이 단순하고 $PS1 및 $PS2 변수에만 기록되기를 원합니다. 나는 그것들이 별도의 파일이나 전체 스크립트 또는 프로그램이 되는 것을 원하지 않으며 가능한 한 적은 수의 외부 프로그램을 실행하기를 원합니다. 그래서 이것이 제가 게시한 이유입니다.
현재 프롬프트를 구성하는 방법은 다음과 같습니다.
function setPromptTheme()
{
if [ $UID = 0 ]
then _promptColorUID=yellow
else _promptColorUID=blue
fi # Checks if the user is root and colors some parts of the prompt accordingly
if [ -z $SSH_CONNECTION ]
then _promptColorSSH=white
else _promptColorSSH=yellow
fi # Checks if the session is running through SSH and colors some parts of the prompt accordingly
export PS1="%(?.%K{green}%F{black} √ %F{green}%K{black}$(printf '\ue0b0')%f%k.%K{red}%F{black} × %F{red}%K{black}$(printf '\ue0b0')%f%k)%K{black} %F{$_promptColorSSH}%n@%M %F{black}%K{$_promptColorUID}$(printf '\ue0b0')%k%K{$_promptColorUID}%F{black} > %k%F{$_promptColorUID}$(printf '\ue0b0')%f%k "
export RPS1="%F{$_promptColorUID}$(printf '\ue0b2')%K{$_promptColorUID}%F{black}
답변1
여기에서 사용할 수 있습니다 $'\uxxxx' or $'\Uxxxxxxxx'
( $'...'
인용문은 ksh93에서 따왔으나, \u
/에 대한 해석은 실제로 일부 변경에도 불구하고 다른 쉘에 의해 도입되었으며 그 이후로 복사되었습니다).\U
zsh
그래서:
PS1="...."$'\ue0b2'"...."
또는:
myChar=$'\ue0b2'
PS1="...$myChar..."
또는
typeset -A powerline=(
branch $'\uE0A0'
ln $'\uE0A1'
padlock $'\uE0A2'
'solid right' $'\uE0B0'
right $'\uE0B1'
'solid left' $'\uE0B2'
left $'\uE0B3'
)
예를 들어 사용하십시오 $poweline[solid right]
.
\[
그리고 \]
는세게 때리다너비가 0인 데이터에 대한 구문을 소개합니다.
이에 상응하는 것은 zsh
이지만 %{...%}
여기서는 문자의 너비가 1열이므로아니요그것을 사용하고 싶습니다. 내 시스템에는 최소한 다음 문자가 있습니다.개인 사용 영역(여기서는 전력선에서 사용됨) 너비는 1로 설정되었습니다( wcwidth()
문자 너비는 zsh가 사용하는 것에 따라 다름). wcwidth()
이들이 0을 반환하는 경우 언제든지 a를 삽입하여 %G
zsh에 너비가 1임을 알릴 수 있습니다.