我对 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;141m
rxvt
zmodload zsh/nearcolor
print -P '%F{#ABCB8D}text%f'
将从调色板中选择最接近的颜色(此处为 150,\e[38;5;150m
转义序列与 相同%F{150}
)。