跨所有主题自定义 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/')
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/')