【问题标题】:How to use escape sequences in a ZSH prompt for truecolor or bold?如何在 ZSH 提示中为真彩色或粗体使用转义序列?
【发布时间】:2017-06-06 01:21:08
【问题描述】:

我正在自定义我的 ZSH 提示,但似乎无法使用转义序列告诉 Konsole 使用粗体文本或特定的 RGB 颜色。

我知道 ZSH 中的内置格式选项,例如 %F{000} %f,但据我所知,这些选项只允许访问默认值(红色、蓝色等)和 256 调色板。虽然%B %b(粗体的内置选项)确实有效,但它似乎仅限于一种颜色。

我希望能够使用所有 RGB 颜色为提示的特定部分着色和/或使其变为粗体。据我所知,这样的事情应该可以工作:

PS1="%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}"

这应该会给我一个像这样的粉红色提示:

HOSTNAME >:                  

但我得到的是:

\e[38;0;255;0;255mHOSTNAME >:\e[0m

我尝试了不同的转义序列,例如 \033 \x1b,但似乎没有任何效果。

那么,如何在 ZSH 提示符中正确使用转义序列?



具体说明:

OpenSUSE Tumbleweed KDE

Konsole --version 16.12.0(键盘:XFree 4)

ZSH --version 5.3

【问题讨论】:

  • FWIW,“所有 RGB 颜色”不是一回事;虽然调色板可能可以更改,但它仍然是一个固定的集合:xfree86.org/current/ctlseqs.html
  • 那是 88-no-million 或 256 个调色板。标准 True Color 只有 24 位或约 1600 万色,并表示为值的组合。终端(无论如何都是 VT 系列)需要索引到固定的调色板表中。
  • 我仍然认为这是一个公平的问题 - 请记住,通过 RGB 访问颜色(不更新调色板本身)可能是不可能的。
  • 哦,可爱。以下是一些支持真彩色的终端。这超出了 VT- - deductivelabs.com/en/2016/03/using-true-color-vim-tmux ;确保 Konsole 在该列表中。
  • @user2864740 Konsole 在列表中,我已经在这里查看过:gist.github.com/XVilka/8346728

标签: shell terminal zsh zshrc konsole


【解决方案1】:

您需要更改字符串,以便 zsh 正确评估它们。

尝试改变:

PS1="%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}"

收件人:

PS1=$'%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}'

注意从 "' 引号的变化以及前面的 $

有关替换的更多信息,请参阅http://zsh.sourceforge.net/Guide/zshguide05.html

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2016-11-25
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多