如果太长,请更改 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就行了。
- 始终在此之后展开
%#
(因为它发生在 %<<
之后)。
这样做的好处是,即使您调整终端大小,它也适用于当前提示。只需尝试一下,您就会发现它会在您调整大小时动态添加或删除字符。
如果我有一个使用 %~/ 获取当前目录路径的 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就行了。 - 始终在此之后展开
%#
(因为它发生在%<<
之后)。
这样做的好处是,即使您调整终端大小,它也适用于当前提示。只需尝试一下,您就会发现它会在您调整大小时动态添加或删除字符。