如何准确地打印当前目录,就像 zsh 在提示符中显示的那样?

如何准确地打印当前目录,就像 zsh 在提示符中显示的那样?

我使用 zsh shell,参数%1~位于提示符内。显示不再/home/username显示~,而是/home/username/Desktop更改为 just Desktop

我需要以编程方式获取提示显示路径的长度,即~只有 1 个字符,而/home/username需要 14 个字符。有没有办法在不使事情变得过于复杂的情况下做到这一点?

答案1

要在提示符之外进行提示扩展,有

print -rP %1~

或者:

print -rPv expanded %1~

存储在扩展变量中。

或者使用%参数扩展标志:

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

或者存储在变量中:

expanded=${(%)var}

要获取字符数的长度:

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

但请注意,如果有 coloring/bold/italic... 指令,长度还将包括着色转义序列中的字符数,您将无法获得提示扩展的显示宽度。

相关内容