所以我目前正在使用 manjaro linux,并且我使用 urxvt 作为我喜欢的终端,所以在这一切开始之前切换终端不是一个选项,如果我很粗鲁,对不起。
我将 zsh 作为我的默认 shell 安装到它,并通过 oh-my-zsh 添加了主题 robbyrussell。起初一切都很好,一切正常,但更新后我的图标坏了。特别是(如果您熟悉主题)箭头图标坏了,并且与所有其他主题中的所有图标相同。
此问题仅发生在 urxvt 上,因为当我尝试使用其他终端(例如 sterminal)时,主题有效。
您可以在此处看到一些屏幕截图这是它应该看起来的样子(从 sterminal 截取的屏幕截图)
这就是它的外观(从 rxvt 截取的屏幕截图)
我一直在 reddit、github repos(如 oh-my-zsh 和 robbyrussell officiall repo)寻求帮助,但似乎没有人帮助我,所以我真的希望你们能给我帮助。
以下是有关我的操作系统和终端的一些信息:
URXVT Version 9.22
Operating System : Manjaro i3 4.12.24-1
No Desktop Envoirment
i3wm as window manager
我正在为我的 zshrc 文件使用默认的 oh-my-zsh 配置和来自 manjaro i3 的默认 Xreources,您可以在此处找到。如果您需要更多信息,请告诉我。任何帮助将不胜感激!
首先,终端类型 rxvt 和 unicode-rxvt(通常缩写为 urxvt)之间存在显着差异。您已经指出您使用的终端是“URXVT Version 9.22”,因此为避免混淆,请使用正确的名称,而不是 rxvt,而是 urxvt。
正如 Mikel 所指出的,Xresources 文件告诉 urxvt 使用 9x15 字体,这是 (a) 旧式 X11 服务器提供的字体方法和 (b) 能力有限的位图字体。
oh-my-zsh Github README 文件解释
因此,为了显示正确的箭头形状,您需要让终端使用适当的字体。也许您破坏该功能的更新是重置 urxvt 字体使用的更新?
当您声明 sterminal 正确显示提示时,请检查正在使用的字体,然后在验证它与手动测试 urxvt -font "font_name" 一起使用后,更改 ${HOME} 目录中的 .Xresources 以使用该字体。(对于 Xft 提供的字体的较新方法,font_name 前面是 "xft:",后面是 ":size=12" 字体大小)。
检查我的 urxvt 后,似乎很多知名的 truetype 和 opentype 等宽字体不提供“右箭头”字形,只显示一个空框。然而,一种现成可用的标准字体(并且应该安装在您的系统上)是 Deja Vu Sans Mono。
所以尝试启动一个 urxvt
并查看您的提示是否正确显示。
查看https://bbs.archlinux.org/viewtopic.php?id=173477以讨论在 Xresources/Xdefaults 文件中修改 urxvt 的字体资源规范。
PS 不要忘记,如果您首先启动 urxvtd 守护程序,然后使用 urxvtc 启动终端,则可以更有效地使用多个 urxvt 终端。
附录
感谢您确认您正在使用 urxvt 并且您已安装 DejaVu Sans Mono。
确认在提示符下在终端中输入的命令没有发生字体替换
产生输出
可用的字体的实际字体文件位置和样式可以通过
现在假设一切正常,您需要通过从终端的命令行启动 urxvt 进行检查(很抱歉没有在上面说得很清楚,我在 Deja 和 Vu 之间有空间,这可能会导致问题)
您可以将右箭头字符(从此处)“➜”剪切到该 urxvt 中,并且它可以正确显示,我已经检查过它确实有效。
我还可以确认将以下内容放入 Xresources 文件中
并使用 xrdb -merge Xresource_file_name 加载到 Xorg 服务器资源数据库中以 100% 确定将使用这些值,然后在命令行中仅使用 urxvt 启动终端会导致终端中字体正确显示右箭头字符. (您还应该注意到这种字体的特点,l 字符是卷曲的,并且在零字符的中心有一个点)。
我通常在 urxvt “Luxi Mono” 中使用的字体(更容易阅读,恕我直言,容易上手)即使“font-manager”程序显示“Luxi Mono”确实有字形,也不能正确显示右箭头。同样,xterm 也坏了,但在 lxterminal、mate-terminal 和 xfce4-terminal 中的测试(检查了字体设置为 Luxi Mono 的首选项)都正确显示了右箭头。因此,urxvt 和 xterm 中的某些字体(如果我理解正确,它们共享一些代码来源)似乎确实有些问题,就像其他类似工作的字体共享一些公共代码即 libvte 一样。
我也在使用 Manjaro Linux (18.0.4 Illyria) 的 i3wm 社区版和 URXVT 版本 9.22。我在安装 Oh My Zsh 时遇到了完全相同的问题。
遵循 JG Miller 的全面而有用的建议,我按照建议编辑了我的 ~/.Xresources 文件,并且它起作用了。极好的!
直到我打开 Manjaro 的预装文件管理器 - ranger(基于 vi 键绑定的终端)。对 ~/.Xresources 的更改现在导致此应用程序中的图标格式不正确。
找到一个类似的堆栈溢出问题我(在恢复上述更改后)修改了我的 ~/.Xresources 文件:
至:
我的理解是,上面的意思是 Manjaro i3 默认字体用于 ranger,但是当遇到无法识别的字形时(例如 Oh My Zsh 中的字形),则使用 DejaVu Sans Mono。两个应用程序现在都可以正确显示。
然而,感谢 JG Miller 提供了正确的方向。