4

我在 Cygwin 中将 ZSH 与 oh-my-zsh 一起使用,并且正在使用“云”主题,它将云表情符号 (☁) 放在提示符前面。我喜欢这样,但想尝试稍微定制它以显示不同的图像。但是,某些表情符号字符(至少我尝试过的那些)显然无法正确呈现。

这是 ohmyzsh 附带的云主题:

if [[ -z $ZSH_THEME_CLOUD_PREFIX ]]; then
    ZSH_THEME_CLOUD_PREFIX='☁'
fi

PROMPT='%{$fg_bold[cyan]%}$ZSH_THEME_CLOUD_PREFIX %{$fg_bold[green]%}%p %{$fg[green]%}%c % {$fg_bold[cyan]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'

这就是该主题的外观:

ZSH终端云主题截图

我尝试用另一个替换云表情符号,如下所示:

if [[ -z $ZSH_THEME_PAW_PREFIX ]]; then
    ZSH_THEME_PAW_PREFIX=''
fi

PROMPT='%{$fg_bold[yellow]%}$ZSH_THEME_PAW_PREFIX %{$fg_bold[green]%}%p %{$fg[green]%}%c %{$fg_bold[cyan]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'

但是,它在我的控制台中只显示了一半的表情符号图像:

ZSH终端爪子主题截图

我会注意到我在这两种情况下都使用Source Code Pro等宽字体。在我看来,表情符号在第二个示例中被渲染在更窄的空间中。有没有办法解决这个问题?或者更确切地说,为什么会有差异?这些表情符号是如何编码的?

4

1 回答 1

4

这不是zsh问题,它是终端仿真器和相关角色的问题的组合。

这是我的提示中使用的字符:

在此处输入图像描述

我使用等宽字体:Inconsolata。这意味着所有字符都垂直排列。但是,您要询问的表情符号字符太宽(占用两个字符空间)。

认为这意味着该字符的排版比普通字符宽 1.7-2 倍,并且您的终端仿真器不知道如何处理它。渲染时,它显示正常的字符宽度,不幸的是切断了字符的右侧部分。

我会推荐:

  • 寻找不同的终端模拟器或字体:我不确定它是你的组合,还是特别是字体,或者特别是模拟器。(我不使用 Cygwin,也不推荐任何基于 Windows 的软件)。
  • 将字符更改为不会溢出字符宽度的字符。

注意:有趣的是,您的第一个示例也太宽泛了:

在此处输入图像描述

(它应该直接在 下a)。也许只是爪印字符宽(双)而不是一点(1.5-ish)。

可以尝试在字符后面设置一个空格:

ZSH_THEME_PAW_PREFIX=' '

但我不知道这是否可行。

于 2013-07-20T03:43:27.827 回答