加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

powershell – wsl中zsh的颜色问题

发布时间:2020-12-14 02:19:07 所属栏目:Linux 来源:网络整理
导读:所以,我正在尝试在wsl终端内设置oh-my-zsh(在这里使用power shell作为控制台,但我在cmd中遇到了同样的问题).我想我正确设置了所有颜色: 当我运行这个: print -P’%B%F {red} co%F {green} lo%F {blue} rs%f%b’ 我得到了预期的: 但是,正如你所知,我
所以,我正在尝试在wsl终端内设置oh-my-zsh(在这里使用power shell作为控制台,但我在cmd中遇到了同样的问题).我想我正确设置了所有颜色:

当我运行这个:

print -P’%B%F {red} co%F {green} lo%F {blue} rs%f%b’

我得到了预期的:

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

有没有办法看到转义序列,所以我可以确定问题是否与转义序列相比?

解决方法

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

确实,哦-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 – 选择图形修正.

尝试描述上面的输出:

(^ [[39m:前两个字符由cat -v转义.我们有ESC [39m.]

> ^ [[39m ^ [[0m ^ [[49m:来自%{%f%k%b%}打印$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转义序列不匹配.如果我们看到sh ./16colors.sh的输出,我们可以检查终端的颜色托盘设置是否正确,并且在xterm分配中使用16colors.sh.
(可以找到xterm默认设置的输出示例,例如:https://www.in-ulm.de/~mascheck/various/xterm/16-table.html)

似乎你的powershell的Solarized(?)主题将ansi颜色序列映射为蓝色(^ [[44m或^ [[34m]为我们眼睛的灰色颜色).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读