使用 vim 或 tmux 时表情符号无法正确显示

lar*_*sks 5 fonts terminal emoji

我在 Arch Linux 上运行Tilix。我在运行 vim 或 tmux 时遇到表情符号显示问题,即使在不运行 vim 或 tmux 时在同一终端中工作正常。

出于演示目的,我有一个名为的 shell 脚本,smile如下所示:

#!/bin/sh

echo ''
Run Code Online (Sandbox Code Playgroud)

当在终端上运行时,它会生成:

在此输入图像描述

但是当tmux在同一终端上运行时,我得到:

在此输入图像描述

如果我打开脚本,vim我会看到:

在此输入图像描述

在我的 Fedora 31 系统上,也运行 Tilix(在 Gnome 下),以上所有功能都运行良好:表情符号在 tmux 和 vim 下正确显示。

对这里可能发生的事情有什么想法吗?

Hac*_*ash 4

从操作系统区域设置到终端、Tmux、Vim,您都需要正确的 Unicode。链的每个部分都必须正确支持 Unicode。

对于您的操作系统区域设置

你需要类似的东西: set LANG="en_US.UTF-8"

对于多路复用器

尝试使用 启动 tmux tmux -u,就像 Jon 建议的那样。如果这不起作用,那么您可能需要检查配置文件.tmux.conf或重置为默认值。

对于维姆

你需要编译支持多字节的 vim。

最简单的方法是运行

./configure --with-features=big
make
Run Code Online (Sandbox Code Playgroud)

这将构建具有正确支持的 vim。

您可以验证它是否已正确编译

:version
Run Code Online (Sandbox Code Playgroud)

在 vim 中或通过运行

vim --version
Run Code Online (Sandbox Code Playgroud)

并寻找+multi_byte. 如果它说它-multi_byte不起作用。