shell 如何在ZSH提示符中使用转义序列来显示真彩色或粗体?

nqwrtyyt  于 2023-08-07  发布在  Shell
关注(0)|答案(3)|浏览(126)

我正在定制我的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风滚草KDE
Konsole --版本16.12.0(键盘:XFree 4)
ZSH --版本5.3

ltqd579y

ltqd579y1#

您需要更改字符串,以便zsh正确地计算它们。
尝试更改:
第一个月
收件人:
PS1=$'%{\e[38;0;255;0;255m%}%M >:%{\e[0m%}'
请注意,从"'的引号沿着前置的$的更改
参见http://zsh.sourceforge.net/Guide/zshguide05.html了解更多关于替换的信息。

mlnl4t2r

mlnl4t2r2#

我可能有点晚了,但在ZSH上,你的答案将是:

PS1="%F{green}%M >:%f"

字符串
您的原始代码使用ANSI转义序列进行颜色格式化,这可能无法在所有Zsh终端中正确工作。此更新的代码使用Zsh特定的提示符转义序列(%F{color_code}和%K{color_code})分别设置Foreground和bacK底色。
要应用此设置,您必须在位于~/. zshrc的.zshrc文件中进行设置。
运行此命令以自动设置它(它不会覆盖任何现有设置):

touch ~/.zshrc && echo '\nPS1="%F{green}%M >:%f"' >> ~/.zshrc && echo "Success";


Here是一个StackOverflow问题,它回答了zsh中的颜色是如何工作的。

uujelgoq

uujelgoq3#

您可以使用RGB三元组使用%F指定任意24位颜色。

% print -P "%F{#009090}tealish"
tealish

字符串
(You我必须想象出合适的颜色,因为我不能单独使用文本来重现它。

相关问题