如果太长,请更改 zsh 主题

Change zsh theme if too long

如果我有一个使用 %~/ 获取当前目录路径的 ohmyzsh 主题。有没有办法告诉它如果行长需要换行,只使用当前目录而不使用完整路径?

不完全是,但 Zsh 实际上可以做比这更好的事情!你可以在里面使用%-X<Y<Z%<< to ensure you always have at least X characters remaining after your prompt, by trimming the left side of Z and replacing the trimmed part with Y. (Note that Y itself is always printed literally and any prompt escape sequences它不会被展开。如果你想让 Y 的样式与 Z 不同,你必须在 %X<Y< 前后放置提示转义符。)

例如:

PS1=$'\n%-40<...<%~%<<%# '

这是做什么的:

  • 如果展开%~会在该行留下40个或更多字符的空白space,然后将其全部展开。
  • 否则,在 %~ 的左侧打印一个 ... 并从 %~ 的扩展左侧打印一个 trim 字符,直到我们的提示正好留下 40 个字符空space就行了。
  • 始终在此之后展开 %# (因为它发生在 %<< 之后)。

这样做的好处是,即使您调整终端大小,它也适用于当前提示。只需尝试一下,您就会发现它会在您调整大小时动态添加或删除字符。