如何在 zsh/Screen 中使用十六进制颜色代码?

How to use hex color codes in zsh/Screen?

在使用 zsh 的 Raspberry Pi 上,我设置 PS1=%B%F{#50F862}%n@%m%f%b:%B%F{#625EF6}%~ %#%f%b 模仿 ${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w $\[3[00m\] 的默认 bash 着色,因为我更喜欢使用 zsh .这在通常的 ssh 会话中按预期工作,但是当我开始 screen 会话时,提示颜色为灰色。

如果我改为 PS1=%B%F{green}%n@%m%f%b:%B%F{blue}%~ %#%f%b,那么颜色会按预期显示(而且,我必须承认,看起来很难区分 - 所以这不是什么大问题,这只是一种好奇心)。如何在屏幕的 zsh 提示中使用十六进制颜色代码?

试试这个:

zmodload zsh/nearcolor

并非所有设备和程序都支持十六进制三元组颜色;看起来 screen 可能在只能处理 256 colors 的集合中,因此它不理解它得到的转义码。使用 nearcolor 模块,zsh 将尝试将十六进制颜色映射到一种受支持的颜色。

你也可以直接用%F%K指定xterm颜色,避免加载任何模块:

PROMPT='%B%F{93}%n@%m%f%b%F{240}:%f%B%K{112}%~ %#%k%b '