【问题标题】:How to italicize prompt for zsh (oh-my-zsh, iTerm2)?如何将 zsh 提示斜体(oh-my-zsh,iTerm2)?
【发布时间】:2021-06-05 07:25:38
【问题描述】:

我想在 iTerm2 中使用 oh-my-zsh 将我的 zsh 提示(特别是正确的提示/RPROMPT)斜体化,但到目前为止在这样做时遇到了问题。我检查了终端可以输出和查看带有echo -e "\e[3mitalic\e[0m"的斜体字体。

到目前为止我尝试过的事情:

  1. RPROMPT = '\e[3m Hello \e[0m' :输出是文字引用 \e[3m Hello \e[0m
  2. 来自here,我试过了
 HELLO = Hello
 RPROMPT = '\e[3m $Hello \e[0m'`

并且输出仍然有 \e[3m\e[0m 部分

  1. 来自an example,我尝试使用\x1b[3m 而不是\e[3m:仍然输出\x1b[3m\x1b[0m

  2. 我找到了this page,但我不明白我在看什么/我应该做什么。

我想让斜体格式正常工作,因此非常感谢任何帮助。

【问题讨论】:

  • 谢谢,前面的美元符号正是我需要的!你想把你的评论变成答案,我会把它标记为已回答吗?

标签: zsh prompt iterm2 oh-my-zsh


【解决方案1】:

您可以使用RPROMPT=$'string with special escaping' (See bash manual)

它可能存在一些问题,例如左侧提示被编辑。

【讨论】:

  • 根据您的回答,我设法找到了一个不会与左侧提示混淆的解决方案。您需要使用字符串引号 %{ ... %} 来环绕转义序列格式,例如RPROMPT=$'%{\x1b[3m%} hello %{\x1b[0m%}'
【解决方案2】:

根据GrapeApple的回答进一步测试后,我找到了一个不会和左边提示混淆的解决方案。根据zsh documentation,您需要使用字符串引号%{ ... %} 来环绕转义序列格式,例如:

RPROMPT=$'%{\x1b[34;1;3m%} hello %{\x1b[0m%}'

【讨论】:

    【解决方案3】:

    为了更好的兼容性(如果你有一天用另一种 TERM 运行你的 zsh),我不会硬编码转义序列,而是使用类似的东西

    RPROMPT="$(tput sitm) Hello $(tput sgr0)"
    

    请参阅man terminfo了解sitmsgr0 的含义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 2018-03-08
      • 2015-06-20
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多