Zsh自定义提示符并更新变量的值

Zsh自定义提示符并更新变量的值

我想使用在我的 zsh shell 中设置的变量的值来显示在我的提示行中。

例如,假设export TOKEN='hello'在我的会话中设置了。那时,我加载了包含 的提示"$TOKEN"

这工作正常,提示也正确显示。但是,如果我更改 TOKEN 的值,提示不会更新。

每次执行命令后,如何让 zsh 更新我的提示?

答案1

有几种方法可以做到这一点。您应该查看precmdpreexec函数。它们位于hook functionszshmisc您可以阅读在线的或使用man zshmisc

一个简单的解决方案就是阅读这个 unix.stackexchange.com问题,它说把这个放到你的~/.zshrc文件中:

 setopt prompt_subst
 PROMPT='$TOKEN'

这将完成你想要的:

 ┌─(simont@charmander:s000)─────────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── export GREETING="foo"                                 ──(Wed,Dec12)─┘
 foo ┌─(simont@charmander:s000)─────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── export GREETING="bar"                                 ──(Wed,Dec12)─┘
 bar ┌─(simont@charmander:s000)─────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── 

(这稍微弄乱了我的提示,但您可以看到foobar正常显示,并在$GREETING更改时进行更新。在您的情况下,使用$TOKEN)。

我的提示沉重借用Phil! 的 ZSH 提示符,当我学习定制我自己的时,我发现它非常有用。

相关内容