跨所有主题自定义 ZSH 提示

时间:2021-03-03 15:19:48

标签: zsh zshrc

tl;dr:如何修改我的主机(提示中的 %m),以便无论主题如何都可以修改它?

在我的工作计算机上,我无法更改我的主机名。当我在 %m 上时,我编辑了一个 (oh-my-)zsh 主题以用更短的主题替换主机 (myridiculoushostname.evil.corp)。我想尝试更多 (oh-my-)zsh 主题(例如,通过将我的主题设置为 random),但我想以某种方式仅修改所有这些中的提示的主机组件。

1 个答案:

答案 0 :(得分:1)

hacky 答案:在您的根 .zshrc 中执行所有魔术,并在 shell 变量 HOST 上执行此操作。例如,将 HOST="test" 添加到您的 .zshrc 将使 %m%M 都读为 test。我称之为 hacky 的原因是 HOST 是一个通用的 shell 变量,它可能的其他应用程序和脚本会检查它的值。

'正确' 答案:在您的根 .zshrc 中设置您自己的提示,并以与您现在处理它完全相同的方式处理主机名魔术。这样做的缺点是没有显示每个主题的提示,但 AFAIK 无法直接修改 %m evals 的内容。

答案太吓人了,我差点没写出来:在 zshrc 的末尾,使用 awk 对 PROMPT 变量进行字符串替换。您可以简单地将 %m 映射到您选择的字符串,从而有效地对 zsh 进行提示替换。无论您使用什么主题,这都可以使用,但它看起来很笨拙。

例如:PROMPT=$(echo $PROMPT | sed 's/%m/test123/')