每次在 zsh 中显示提示时重新计算提示表达式

我正在重新调整我的 zsh 提示,基于 达拉斯 主题以及来自 哦,我的zsh东西 样式。 我很喜欢达拉斯如何将提示的许多区域包含在变量中,这使得识别正在发生的事情变得更加容易。

问题是,这些字符串是评估的一次用于扩展。 因此,当我尝试使用一些充满活力的东西时,例如 dstufft 的 ${PWD/#$HOME/~},它就不再动态更新了。

我怎样才能充分利用这两个地球仪? 我当然希望将提示分成小节,每次提示被写入时都会检查这些小节。

7
2022-06-07 14:40:26
资源 分享
答案: 3

好的,

我只需要留下我的 $ 指示。 例如:

${PWD/#$HOME/~}
\${PWD/#\$HOME/~}
1
2022-06-07 15:12:37
资源

在 zsh 中,您应该为此使用 % 转义。 例如,而不是 ${PWD/#$HOME/~}(作为您的示例),只需使用 %~

阅读 zshall(1) 并尝试找到简单的提示转义 (这里估计太长了)。

0
2022-06-07 15:12:32
资源

确保 prompt_subst 已打开。 如果需要,将坚持线添加到您的 ~/.zshrc

setopt prompt_subst

这会通知 zsh 在每次显示提示时检查提示字符串。 然后,确保将 PS1(或提示主题使用的其他变量)指定为首选:

PS1='${PWD/#$HOME/~}'

当您设置变量时,单独的引号可防止对 $ 等唯一字符进行评估。

15
2022-06-07 15:11:42
资源