【问题标题】:MacOS zsh prompt does not show Purple?MacOS zsh 提示不显示紫色?
【发布时间】:2020-04-27 00:02:32
【问题描述】:

我正在尝试将我的git branch 设为紫色。这是我所拥有的:

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
    # git symbolic-ref --short HEAD 2> /dev/null
}

setopt PROMPT_SUBST
PS1='%{%F{green}%}%n@%m:%{%F{yellow}%}%1~%{%F{red}%}$(parse_git_branch)%{%F{none}%}$ '

所以我的username@machine: 是绿色的,foldername 是黄色的。但是,如果我将颜色 red 更改为 purple 或除 whitecyan 之外的任何其他颜色,我的提示不会显示正确的颜色。

仅供参考:这是我在bash 中的内容:

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="\[\033[0;32m\]\u@\h\[\033[00m\]:\[\033[0;33m\]\W\[\033[0;35m\]\$(parse_git_branch)\[\033[00m\]\$ "

我试过了:

  • for i in {1..256}; do print -P "%F{$i}Color : $i"; done;,我的终端显示所有颜色范围,所以我用一些 ANSI 代码替换了red,但分支变成了cyan
  • \e[0;31m$ \e[0m 带有 ANSI 转义字符,但它仍然不起作用。
  • $F{}$fg{}
  • 当然要退出终端,获取~/.zshrc 文件,重新启动计算机。

我错过了什么?

【问题讨论】:

  • parse_git_branch 的输出是什么?它是否可能包含显式设置青色的代码? %} 的目的是什么?我没有在提示配置中使用它。
  • 代码中可以看到parse_git_branch()函数的输出。它只显示 git 分支。不,它不会像我在 bash 中那样设置颜色。
  • purple 不是已知颜色;请改用magenta
  • 唯一的预定义颜色名称是黑色、红色、绿色、黄色、蓝色、洋红色、青色和白色。对于其他颜色,您需要指定颜色编号(对应于终端的调色板)或 RGB 三元组。

标签: macos zsh


【解决方案1】:

使用%F{...},您可以使用以下方法之一:

  1. 与终端调色板中的条目相对应的整数(范围取决于该调色板的大小)。这就是您在for 循环中看到的内容(尽管您也可以使用i=0;请参阅下一点)。例如。 %F{red}

  2. 预定义名称之一 blackredgreenyellowbluemagentacyanwhite(对应于调色板条目 0 到7,分别)。例如。 %F{1}(请注意,某些终端可能支持其他名称。)

  3. 一个 RGB 值,以 # 开头,后跟 3 或 6 个十六进制数字。例如。 %F{#f00} 或 %F{#ff0000}`

    假设您的终端允许,这可以让您更好地控制所显示的颜色,因为 %F{red}%F{1} 都只是告诉终端显示颜色 #1(终端模拟器可能允许将其设置为任何颜色)用户喜欢的颜色)。另一方面,%F{#ff0000}始终显示可用的最亮的红色阴影。

【讨论】:

    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多