gpt4 book ai didi

powershell - wsl 中 zsh 的颜色问题

转载 作者:行者123 更新时间:2023-12-03 09:33:27 24 4
gpt4 key购买 nike

因此,我正在尝试在 wsl 终端内设置 oh-my-zsh(此处使用 powershell 作为控制台,但我在 cmd 中遇到了同样的问题)。我想我正确设置了所有颜色:
enter image description here

当我运行这个时:
print -P '%B%F{red}co%F{green}lo%F{blue}rs%f%b'
我得到了预期:
enter image description here

但是,正如你所知道的,我的提示仍然是错误的。我正在使用 agnoster 主题,密码上的灰色背景应该是蓝色的。

有什么方法可以查看转义序列,以便我可以确定问题是否出在转义序列与渲染之间?

最佳答案

我们可以检查 $PROMPT (或 $PS1 )。

的确,oh-my-zsh 的 agnoster 主题 uses PROMPT_SUBST 为了它。因此,我们可以通过重定向或管道输出 print -P 来获得原始转义序列。 :

$ print $PROMPT
%{%f%b%k%}$(build_prompt)
$ print -P $PROMPT | cat -v ;# or redirect to a file as you like
^[[39m^[[0m^[[49m^[[40m^[[39m me@mycomputer ^[[44m^[[30mM-nM-^BM-0^[[30m ~ ^[[49m^[[34mM-nM-^BM-0^[[39m

这些原始转义序列; ANSI 转义码,在 https://en.wikipedia.org/wiki/ANSI_escape_code#Colors 中有很好的描述.它是 CSI 代码 CSI n m SGR - 选择 Graphic Renditoin。

尝试描述上述输出:

( ^[[39m :前两个字符由 cat -v 转义。我们有 ESC[39m 。)
  • ^[[39m^[[0m^[[49m : 来自 %{%f%k%b%} print $PROMPT的一部分输出。 ^[[39m重置默认前景色,^[[0m重置所有效果和 [[49m重置默认背景颜色。
  • ^[[40m^[[39m me@mycomputer : bg black 和 fg 默认颜色
  • ^[[44m^[[30m M-nM-^BM-0 : bg blue 和 fg 默认颜色( M-nM-^BM-0cat -v 转义形式的 )

  • 此时,似乎提示输出了 pwd 的 bg 蓝色代码。你可以检查 print -P '%b%F{red}co%F{green}lo%F{blue}rs%f%b' (注意:第一个 '%b')

    这意味着 powershell 的调色板设置与 ANSI 转义序列不匹配。我们可以通过 16colors.sh 检查终端的调色板设置是否正确。在 xterm如果我们有 sh 的分布看到 sh ./16colors.sh 的输出.
    (可以找到示例 xterm 默认设置的输出,例如: https://www.in-ulm.de/~mascheck/various/xterm/16-table.html )

    似乎您的 powershell 的 Solarized(?) 主题将 ansi 颜色序列 blue( ^[[44m^[[34m )映射为 grey - 我们眼睛的颜色。

    关于powershell - wsl 中 zsh 的颜色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640893/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com