vim inside tmux 中 colorscheme 的颜色显示与 tmux 外部有差异,如何修复呢?

2023-04-30 22:16:09 +08:00
 7RTDKSAK

不是找不到答案,恰恰相反,是答案太多了,中英文合计有五六个修复方案

也问了 GPT,它甚至从其中俩套修复方案中都各自抽取一部分出来以后拼凑了一个新方案给我

所以懵逼了,有没有大佬解释一下为啥 tmux 内外的颜色会有差异?以及"必要且充分"地修复此问题地配置项都有几个?

256COLOR 和 TRUE_COLOR 又是什么呢?

784 次点击
所在节点    问与答
4 条回复
hanxiV2EX
2023-04-30 22:23:28 +08:00
曾经也遇到过很多次,现在使用 tmux 的配置搞定了。 在 bashrc 设置

export TERM=tmux-256color

在 tmux.conf 里配置

set -g default-terminal "tmux-256color"
set-option -ga terminal-overrides ',tmux-256color:Tc'
set-option -ga terminal-overrides ',tmux-256color:RGB'

也没去细研究过为啥,好像 tmux 有个 issues 说过的。
7RTDKSAK
2023-04-30 22:29:39 +08:00
@hanxiV2EX

好吧,又是一个新方案

感觉来来回回就是那几个条目互相排列组合,产生了一堆修复方案

也不知道到底哪几个条目才是必需地...逼死强迫症了哈哈哈...
keyv
2023-05-01 10:46:24 +08:00
如果想了解 true color 等相关概念,可以看一下 https://github.com/termstandard/colors

只要确保终端和 tmux 中支持的色彩一致,tmux 内外颜色就不会有差异。可以用$TERM 这个环境变量确认一下。
gleport
194 天前
tmux 的色彩和在终端上有差异的原因是:tmux 没有为终端开启 RGB 特性,本来应该是 RGB 24 位颜色的 ANSI 转义序列被 tmux 转换为比较接近的 256 色的转义序列,再输出给终端渲染。可以通过 `tmux -vvv` 启动日志查看 RGBCOLOURS flag 确认。

tmux 也给用户提供了配置来开启 RGB 特性:set -as terminal-features ",根据自己的$TERM 值而定*:RGB"

另外不推荐 export TERM=tmux-256color 这种方式修改 TERM 环境变量,这个值一般是终端模拟器初始化的时候终端自己设置的,许多外部程序会依赖这个值查询出对应的 terminfo ,从而确定终端特性能力以及在不同输入的行为,比如对 <CTRL>_l 这些控制序列的反应。正如 kitty 在这个配置上的警告说的:


#: The value of the TERM environment variable to set. Changing this
#: can break many terminal programs, only change it if you know what
#: you are doing, not because you read some advice on "Stack Overflow"
#: to change it. The TERM variable is used by various programs to get
#: information about the capabilities and behavior of the terminal. If
#: you change it, depending on what programs you run, and how
#: different the terminal you are changing it to is, various things
#: from key-presses, to colors, to various advanced features may not
#: work. Changing this option by reloading the config will only affect
#: newly created windows.

我刚写了一篇 blog 来总结了一下 tmux 在不同终端下颜色差异的原因: https://hmgle.github.io/terminal/tmux/color/2024/05/12/term-color.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/936650

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX