我正在尝试使用ANSI转义序列来设置zsh提示符的颜色,但是当显示提示符时,转义字符(\e
)似乎被转义了。以下是我运行的示例和输出:
> autoload promptinit && promptinit
> autoload colors && colors
> echo "Not sure if those two lines are required" > /dev/null
> PROMPT="\e[32mhi> "
\e[32mhi> echo "Note that the escape character wasn't interpreted correctly" > /dev/null
\e[32mhi> print -P "$PROMPT"
hi>
\e[32mhi> echo "The hi> was printed in green, as I want" > /dev/null
zsh
的打印文档似乎说-P
标志使其打印得像在提示符中一样,但它与实际的提示符行为不匹配。有人知道为什么转义字符不起作用吗?我尝试使用
$fg_no_bold
,像$fg_no_bold[red]
这样的东西确实有效,但我想使用超过8个标准颜色,但是$fg_no_bold[32]
不起作用(对于任何数字都是如此,不仅仅是32)。如果使用$fg_no_bold
使256种颜色工作更容易,那么我可以做到!谢谢!
man zshzle
。 - Eljayprint -P $PROMPT | hexdump -C
这样的命令,-P
选项展开了提示符转义序列,然后hexdump -C
以更易读的 ASCII 格式显示原始字节。 - chepner