首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件设置zsh提示符的格式?

如何根据条件设置zsh提示符的格式?
EN

Stack Overflow用户
提问于 2013-11-07 03:01:11
回答 3查看 2.7K关注 0票数 6

我使用这里给出的答案:How do zsh ansi colour codes work?来格式化zsh提示符并为其添加颜色。

有没有办法根据某些条件格式化提示符?

例如,如果主机名中包含单词PROD,那么我希望提示符的背景为红色。否则,我希望没有背景和粗体绿色文本。

EN

回答 3

Stack Overflow用户

发布于 2013-11-07 04:29:52

您可以设置一个precmd函数,在每次显示提示之前对其进行重置。

代码语言:javascript
复制
set_red_prompt_background () {
  if [[ ${(%):-%M} = *PROD* ]]; then
    PS1="%K{red}$PS1%k"
  else
    PS1="%F{green}%B$PS1%f%b"
  fi
}

typeset -a precmd_functions
precmd_functions+=(set_red_prompt_background)

这没有经过测试,所以如果它按原样工作,我会很惊讶。但这是它的工作原理。

  • ${:-foo}是一种特殊类型的“参数”扩展,它只会扩展到:-后面的单词。在first...
  • ${(%):-%M}中似乎无用与上述相同,但具有(%)标志来指示zsh处理在扩展中发现的任何提示转义。这变成了一种获取全主机名的奇妙方法,如果它与模式*PROD*匹配,则使用%M escape.
  • Check获取将出现在提示符中的完整主机名,即,主机名是否包含PROD。
  • 采用PS1的任何值,并将其包装在%K{red}...%k中以使背景变为红色。请注意,这可能会覆盖在显示提示之前执行的函数列表中已在PS1.
  • Add set_red_prompt_background中设置的任何背景颜色。如果在此之后添加任何函数,它们可能会覆盖您在此处设置的颜色。
票数 2
EN

Stack Overflow用户

发布于 2021-05-23 15:07:48

现在很容易做到,您可以使用条件子字符串

这是语法%(condition.ifTrue.ifFalse)

代码语言:javascript
复制
export PROMPT="%(%m==PROD.ifTrue.ifFalse)"
票数 0
EN

Stack Overflow用户

发布于 2013-11-07 04:31:13

编辑根目录中的.zprofile文件,并对登录的特定用户应用条件。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19820519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档