跨所有主题自定义 ZSH 提示符

Customize ZSH prompt across all themes

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

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

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

'Right' 回答:在您的根 .zshrc 中设置您自己的提示符,并以与您现在完全相同的方式处理主机名魔法。这有一个缺点,即没有显示每个主题的提示,但据我所知,没有办法直接修改 %m 评估的内容。

回答太可怕了,我差点没写出来:在你的zshrc结尾处,使用awk对PROMPT变量进行字符串替换。您可以简单地将 %m 映射到您选择的字符串,有效地对 zsh 进行提示替换。无论您使用什么主题,这都会起作用,但它看起来很迟钝。

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