zsh가 프롬프트에 표시하는 대로 현재 디렉토리를 정확하게 인쇄하려면 어떻게 해야 합니까?

zsh가 프롬프트에 표시하는 대로 현재 디렉토리를 정확하게 인쇄하려면 어떻게 해야 합니까?

저는 zsh 쉘을 사용하고 매개변수는 %1~프롬프트 안에 있습니다. 디스플레이가 더 이상 /home/username표시 되지 ~않고 /home/username/Desktop로만 변경됩니다 Desktop.

프롬프트 표시 경로의 길이는 ~1자에 불과하지만 /home/username14자가 필요하므로 프로그래밍 방식으로 가져와야 합니다. 일을 너무 복잡하게 만들지 않고 이를 수행할 수 있는 방법이 있습니까?

답변1

프롬프트 외부에서 프롬프트 확장을 수행하려면 다음이 있습니다.

print -rP %1~

또는:

print -rPv expanded %1~

확장 변수에 저장됩니다.

또는 %매개변수 확장 플래그를 사용하십시오.

var=%1~
print -r -- ${(%)var}

또는 변수에 저장합니다.

expanded=${(%)var}

문자 길이를 얻으려면 다음을 수행하십시오.

length=${#${(%)var}}

그러나 색상/굵게/기울임꼴... 지시문이 있는 경우 길이에는 색상 이스케이프 시퀀스의 문자 수도 포함되며 확장 표시 너비 힌트를 얻을 수 없습니다.

관련 정보