与 tmux 终端覆盖相比,默认终端如何

art*_*bot 6 tmux

在我的 tmux 配置中,我有以下内容:

set-option -g default-terminal "screen-256color"
set-option -ga terminal-overrides ',*-256color*:Tc'
Run Code Online (Sandbox Code Playgroud)

这意味着如果我运行tmux info | grep Tc检查真彩色支持,它会工作并显示已启用。echo $TERM在 tmux 中screen-256color按预期给出。

正如我从 tmux 手册中了解到的,终端覆盖匹配上的终端名称*-256color*,这是有道理的。

不过,我不明白的是,下列哪项工作/匹配:

set-option -ga terminal-overrides ',*screen-256color*:Tc'
Run Code Online (Sandbox Code Playgroud)

我不明白为什么不?这是怎么回事?

tmux 版本 2.9a

(旁白:如果你想知道为什么我使用screen-而不是,说tmux-这是因为 neovim 似乎需要它来检测真彩色支持)

Nic*_*ott 9

它们是完全独立的,default-terminal从不检查terminal-overrides

default-terminal是用于TERM内部 tmux的默认值,因此应该匹配screen*tmux*。这告诉 tmux 内部的应用程序 tmux 本身的功能是什么。

terminal-overrides匹配TERM外部 tmux 并允许您修改 tmux 在与运行它的终端通信时使用的功能。

大概*-256color匹配,因为您将TERM外部设置为匹配但不匹配的内容screen-256color*(可能xterm-256color)。

如果您想要terminal-overridestmux 内的应用程序的等效项(修改 tmux 内的 terminfo(5) 条目的功能),您将需要在您正在使用的应用程序中查找配置选项,或者基于tmux-256colorscreen-256color使用 infocmp构建您自己的条目(1) 和 tic(1)。

  • 太棒了,谢谢!整个终端世界是我“不想”必须关心的事情之一,值得庆幸的是,大多数时候它们只是工作,但当它们不工作时,这就像一个 PITA 试图掌握*为什么*!这有点像字符编码,工作时很棒,不工作时就是噩梦!非常清楚的解释,谢谢。 (4认同)