所以,我决定尝试一下 Alacritty,在他们的默认配置中有以下注释:
#env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use `alacritty` if it is
# available, otherwise `xterm-256color` is used.
#TERM: alacritty
我不明白的是:为什么我想xterm-256color
在使用 alacritty 时将 TERM 设置为? xterm 不是 Linux 的默认终端模拟器吗?在旧的 OSX 时代,我记得使用 iTerm2,但如果我没有弄错的话,变量 TERM 被设置为xterm-256color
- 当时我从未想过为什么会出现这种情况。
答案1
作为 Neovim 大师,我来这里是为了拯救成千上万想要使用美丽的人真彩色 Alacritty 与 tmux。我已经确认这对两者都有效苹果系统和虚拟机。跟我来!
在alacritty / INSTALL.md来自官方 Alacritty GitHub。
如果你自己建立敏捷
伟大的!确保您在活泼/您克隆并运行的文件夹一个命令:
sudo tic -xe alacritty,alacritty-direct extra/alacritty.info
然后转到你的 rc 文件(在我的例子中.zshrc
)并添加:
export TERM=alacritty
如果您通过 Homebrew 安装 alacritty
伟大的!我和你是同一边的!而不是克隆整个活泼/文件夹,运行这个任何地方在您的计算机中:
mkdir alacritty
然后下载活泼/额外/文件夹并复制到alacritty/
刚刚创建的文件夹中,然后(以下步骤同建造上面的步骤)运行:
sudo tic -xe alacritty,alacritty-direct extra/alacritty.info
然后转到你的 rc 文件(在我的例子中.zshrc
)并添加:
export TERM=alacritty
享受!
答案2
你不会。
正如评论所说,Alacritty 的正确终端类型是:alacritty
。
评论告诉你的是,如果你不这样做明确地指定终端类型,Alacritty 会查看您的 terminfo 数据库是否有alacritty
条目,如果有,则将终端类型设置为alacritty
,并使用糟糕的后备如果没有这样的条目。
xterm-anything
除非您的终端仿真器实际上是 XTerm 程序,否则设置的终端类型是错误的。
正确的做法是alacritty
在 terminfo 数据库中添加一个条目(如果该条目丢失)。 terminfo 都允许条目从机器导出和导入到机器,和允许人们在其主目录中本地添加终端功能记录。
它不应该丢失。 Dickey terminfo 自 2018 年起就有了一个alacritty
条目,Alacritty 开发人员自己也提供了一个 terminfo 条目,人们可以从 2017 年起将其添加到数据库中。
进一步阅读
答案3
原因之一是确保 ls 的输出是彩色的:dircolors 用于设置 LS_COLORS 环境变量。 dircolors 读取 TERM 以确定终端是否支持颜色。如果你跑
dircolors --print-database | grep '^TERM'
您将获得 dircolors 知道的所有颜色终端的列表。alacritty
不在名单上。我假设存在更多具有此类行为的程序,否则 Alacritty 的 TERM 的默认值可能是alacritty-color
(因为*color*
在 dircolors 列表中)。
由于 Mono 中的错误,某些游戏无法启动。这官方解决方法就是使用TERM=xterm
.
答案4
这当前评分最高的答案状态:
正确的做法是在 terminfo 数据库中添加一个 alacritty 条目(如果该条目丢失)。 terminfo 既允许从机器导出条目,也允许将条目导入机器,并允许人们在其主目录中本地添加终端功能记录。
这是一个在本地导出并通过 ssh 远程导入的 oneliner:
infocmp | ssh $user@$host 'tic -x -'
有关导出和导入命令的更多信息,请分别参阅man infocmp
和。man tic
额外的 Unix/Linux 技巧(不要对信使投反对票;-)
使用-
作为文件名是一种常见(尽管不是通用)约定,用于告诉命令需要文件参数来读取/dev/stdin
.许多命令(包括tic
)支持它,但没有在手册页中说明。在大多数情况下,您可以使用显式设备路径。
infocmp | ssh $user@$host 'tic -x /dev/stdin'