【发布时间】:2021-03-26 13:19:43
【问题描述】:
如果我有一个使用 %~/ 获取当前目录路径的 ohmyzsh 主题。有没有办法告诉它,如果行长需要换行,只使用当前目录而不使用完整路径?
【问题讨论】:
如果我有一个使用 %~/ 获取当前目录路径的 ohmyzsh 主题。有没有办法告诉它,如果行长需要换行,只使用当前目录而不使用完整路径?
【问题讨论】:
不完全是,但 Zsh 实际上可以做得比这更好!您可以使用%-X<Y<Z%<< 来确保在提示后始终至少保留 X 个字符,方法是修剪 Z 的左侧并将修剪的部分替换为 Y。(请注意,Y 本身总是按字面打印,而任何 prompt escape sequences 在里面它不会被扩展。如果你想设置不同于 Z 的 Y 样式,你必须在 %X<Y< 之前和之后放置提示符转义符。)
例如:
PS1=$'\n%-40<...<%~%<<%# '
这是做什么的:
%~ 会在行上留下 40 个或更多字符的空格,则将其完全扩展。%~ 的左侧打印一个... 并从%~ 的扩展左侧剪掉字符,直到我们的提示在该行上留下正好40 个字符的空白空间。%# (因为它出现在 %<< 之后)。这样做的好处是即使在您调整终端大小时它也适用于当前提示。试试吧,你会发现它会在你调整大小时动态添加或删除字符。
【讨论】: