对颜色感到困惑 Xterm 与 Zsh - 如何设置 Xterm 而不破坏 Zsh 颜色?

对颜色感到困惑 Xterm 与 Zsh - 如何设置 Xterm 而不破坏 Zsh 颜色?

我对 xterm(或我的情况下是 uxvt,但使用相同)的颜色设置与 zsh PROMPT 颜色感到困惑。

如果我更改 xterm 颜色,那么它会更改 zsh 提示颜色,我认为这会使 zsh 提示颜色不准确。

我该如何处理这种情况?如何设置 xterm 颜色来打破 zsh 提示颜色?

例子.Xdefaults

!colors
!black
URxvt-ml*color0:                #676767
URxvt-ml*color8:                #757575
!red
URxvt-ml*color1:                #EA6868
URxvt-ml*color9:                #FF7272
!green
URxvt-ml*color2:                #ABCB8D
URxvt-ml*color10:               #AFD78A
!yellow
URxvt-ml*color3:                #E8AE5B
URxvt-ml*color11:               #FFA75D
!blue
URxvt-ml*color4:                #71C5F4
URxvt-ml*color12:               #67CDE9
!magenta
URxvt-ml*color5:                #E2BAF1
URxvt-ml*color13:               #ECAEE9
!cyan
URxvt-ml*color6:                #21F1EA
URxvt-ml*color14:               #36FFFC
!white
URxvt-ml*color7:                #F1F1F1
URxvt-ml*color15:               #FFFFFF

来自 zsh 的示例PROMPT(不使用 oh my zsh):

PROMPT='%B%F{046}%n%B%F{123}@%B%F{046}%m %F{051}%b%F{015}%(4~|...|)%3~%B%F{239}$(__git_ps1)%f%k
%F{123}%#%f%b '

答案1

截屏

我没有看到您提供的 zsh 提示有或没有您提供的资源设置有什么区别。

这些只会改变颜色 0 到 15。事实上,%F{green}其中使用颜色 2,我看到了差异(对我来说,你的更改使其在白色背景上不那么明显),但你$PROMPT主要使用 15 以上的调色板颜色。15 以上的意味着为您提供所有可能的色调的广泛选择(但粒度较粗,因为只有 200 多种),并且从一个终端到下一个终端通常都是一致的。

如果您不想受到 0-15 ANSI 颜色自定义的影响,您不想更改并且想要使用这些颜色。

另请参阅zsh/nearcolor不支持真彩色转义序列的终端zsh仍然可以使用 RGB 规范并让 zsh 从调色板中选择最接近的颜色。

例如:

print -P '%F{#ABCB8D}text%f'

(与 中相同)将在支持真彩色转义序列(如 xterm/vte...(类似 ))的终端上$PROMPT打印 RGB 规范中的文本,以及在不支持 88 或 256 调色板(如:#ABCB8D\033[38;2;171;203;141mrxvt

zmodload zsh/nearcolor
print -P '%F{#ABCB8D}text%f'

将从调色板中选择最接近的颜色(此处为 150,\e[38;5;150m转义序列与 相同%F{150})。

相关内容