微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

跨所有主题自定义 ZSH 提示

如何解决跨所有主题自定义 ZSH 提示

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

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

解决方法

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/')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。