所以,我正在尝试在wsl终端内设置oh-my-zsh(在这里使用powershell作为控制台,但我在cmd中遇到了同样的问题)。我想我正确设置了所有颜色:
当我跑这个时:
print -P '%B%F{red}co%F{green}lo%F{blue}rs%f%b'
但是,正如你所知,我的提示仍然是错误的。我正在使用agnoster主题和pwd上的灰色背景应该是蓝色。
有没有办法查看转义序列,以便我可以确定转义序列与呈现的问题是否存在?
答案 0 :(得分:2)
确实,哦-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 - 选择图形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蓝色和fg默认颜色(M-nM-^BM-0
是cat -v
转义形式的)此时,似乎提示输出了pwd的bg蓝色代码。你可以用
检查
print -P '%b%F{red}co%F{green}lo%F{blue}rs%f%b'
(注意:第一个'%b')
这意味着powershell的颜色托盘设置与ANSI转义序列不匹配。如果我们xterm
看到sh
的输出,我们可以在sh ./16colors.sh
分布中检查终端的颜色托盘设置是否正确。^[[44m
。
(例如,可以找到xterm默认设置的输出示例:16colors.sh
)
似乎你的powershell的Solarized(?)主题将ansi颜色序列蓝色(^[[34m
或grey
)映射为{{1}} - 我们眼睛的颜色。