为什么 tmux 忽略“default-terminal”设置?

为什么 tmux 忽略“default-terminal”设置?

我想让斜体字体在 tmux 内正常工作,因为目前它们只能在 tmux 之外工作。研究表明这可以通过设置设置来完成default_terminal,因此我的 tmux.conf 中有以下内容。然而,这似乎并没有完成任何事情。我的理解是这应该设置 $TERM,但这仍然设置为screen.即使我运行以 开头的 tmux TERM=tmux-256color,它也会立即将其设置回screen.这里发生了什么?

set -g default-terminal "tmux-256color"

答案1

我怀疑终端数据库screen及其衍生物screen-256color根本不声明对斜体文本的任何支持,这可能很明显,例如:

tput sitm | xxd

...打印没有什么,这意味着没有任何转义序列会指示您的终端(当它声明自己为screen-like 时)在询问时切换到斜体模式。

然而,至少在 RHEL 9 主机上,标识符的数据库tmux TERM确实支持斜体模式,因为上面的命令行将打印:

00000000: 1b5b 336d                                .[3m

随后,可以通过以下方式测试支持:

echo $(tput sitm) test $(tput sgr0)

,其中文本“test”应以斜体打印。

sitm是终端不变选项,用于tput生成切换到斜体所需的转义序列,同时sgr0将文本的颜色和模式重置回默认值(“SGR”缩写代表“选择图形呈现”)。

不是在您的 shell 中或除了可以知道终端仿真器的任何地方设置TERM,除非您知道自己在做什么并且确定您的系统以某种方式损坏 - 指定TERM您的终端仿真器并且 shell 不可能知道这一点(嗯,它只能知道通过TERM首先查询,对吧?)

我不知道有多少人,多少年来,必须警告不要TERM在所有错误的地方设置(实际上,全部的地方),但它仍在互联网上扩散,这一点显而易见。只是避免设置的TERM时间过长,否则很可能会破坏某些东西,除非您绝对、积极、全心全意地确保您只使用一个终端模拟器。但你不知道。此外,就像我说的,如果你需要设置TERM,那么你的系统中的某个地方就会被破坏,这对于一个足够现代的操作系统来说是很奇怪的,除非你首先在那里破坏了某些东西。

同样,不要将 tmux 的选项设置为除或或它们的衍生物 ( )default-terminal以外的任何选项,手册页有充分的理由警告您不要这样做:screentmux{screen,tmux}{.,-}*tmux

为了使 tmux 正常工作,这必须设置为“screen”、“tmux”或它们的派生物。

多路复用器是不是“Xterm”,因此,如果您认为自己已经摆脱了set-option default-terminal xterm-256color或某种形式的set-option terminal-overrides ...,那么您很可能正在等待一系列问题的出现,这可能会迫使您重新考虑“黑客”。根据您在终端中所做的操作,正确的渲染将被巧妙地破坏,而不需要更多的黑客来“纠正”第一个黑客等等。

我怀疑默认tmux使用的原因是因为当时很流行并且 terminfo 数据库支持它(而不是一个新奇事物)。今天,我怀疑许多发行版都明确支持,因此(或类似的衍生版本,取决于安装的 terminfo 数据库)可能正是您所需要的,不多不少。screenTERMscreentmuxtmuxset-option default-terminal tmuxtmux-256color

答案2

我可能会迟到,但这可能会对登陆这里的人有所帮助。我遇到了这个问题,还有其他一些关于设置真彩色的问题,我还在学习这些东西,所以我可能会混合多个修复程序,但下面是我设置它tmux-256color并让真彩色正常工作的一些信息/步骤。

  1. 不建议更改TERMalacritty 配置中的 var。您应该在您的.tmux.conf文件上执行此操作。

  2. 几个小时后我发现有关 tmux 的一个重要细节是,似乎某些配置不会重新加载,除非您杀死你所有的会话。因此,在尝试新内容或修复时,请在会话下工作,并在每次想要重新加载时终止它,以确保更改生效即 (tmux new / :kill-session) 工作流程

  3. 在将默认终端设置为之前,tmux-256color我做了两件事。 (这是我目前正在发现这部分是否真的相关或只是我们必须终止会话的第 2 点)

  • 设置一个alias tmux="tmux -2"
  • 获取 tmux-256color 的 terminfo 配置文件:sudo apt install ncurses-term
  1. 我有 tmux 3.2,我正在设置我的终端和功能,如下所示:
set -g default-terminal "tmux-256color" 
set -as terminal-features ",xterm-256color:RGB"

无论如何,第 3 点和第 4 点可能与您的问题不太相关,因此第 2 点可能是原因。但我将把 3 和 4 留给可能面临下一个挑战的人。

相关内容