首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tmux 256-彩色输出在256色终端上,8色输出在8色终端上

tmux 256-彩色输出在256色终端上,8色输出在8色终端上
EN

Unix & Linux用户
提问于 2019-11-27 13:59:30
回答 1查看 2.1K关注 0票数 3

我希望tmux自动选择256个颜色模式,即有一个环境变量。

代码语言:javascript
运行
复制
TERM=tmux-256color

环境变量时 tmux

代码语言:javascript
运行
复制
TERM=xterm-256color

在外部设置为

默认行为

256彩色终端仿真器

当前的行为是tmux在任何情况下都选择8种颜色模式:使用支持256种颜色的终端模拟器,即Gnome终端或xterm,并确保它支持256种颜色。

代码语言:javascript
运行
复制
echo $TERM; tput colors
# xterm-256colors
# 256

然后启动tmux。默认情况下,tmux将切换到8种颜色:

代码语言:javascript
运行
复制
echo $TERM; tput colors
# screen
# 8

8-彩色终端仿真器

如果您切换到一个8色终端,即通过按Ctrl+Alt+F2切换到Ctrl+Alt+F2,您将得到

代码语言:javascript
运行
复制
echo $TERM; tput colors
# linux
# 8

tmux里面也是老样子

代码语言:javascript
运行
复制
echo $TERM; tput colors
# screen
# 8

强制256色模式

通过将以下内容添加到我可以强迫tmux选择256颜色模式中来实现~/.tmux.conf

代码语言:javascript
运行
复制
set -s default-terminal "tmux-256color"

但是,如果<#>outer终端模拟器一开始不支持256个颜色,也会出现这种情况。这不是我想要的。

自适应256色模式

有一个问题和一个常见问题在GitHub上,状态设置之一(人们正在报告矛盾的参数)

代码语言:javascript
运行
复制
set -ga terminal-overrides ",xterm-256color*:Tc"
set -sa terminal-overrides ",xterm-256color*:Tc"
set -ga terminal-overrides ",*256col*:Tc"
set -sa terminal-overrides ",*256col*:Tc"

应该使tmux获得终端的颜色模式,但它们都不能用于我的安装(在Arch上使用tmux3.0)。

根据当前终端仿真器支持的内容,是否有明确的方法让tmux选择8种或256种颜色?

EN

回答 1

Unix & Linux用户

发布于 2019-11-27 20:39:21

这实际上并不是tmux完全可以为您所做的事情,因为它不能更改已经在运行的程序的术语,例如,如果您从带有xTer-256颜色的终端中分离出来,然后重新连接到带有xterm的终端上。

不过,你可以自己做。客户端的术语可用client_termname格式。所以你可以把这样的东西放在你的PS1或者.profile或者其他什么东西上:

代码语言:javascript
运行
复制
if [ -n "$TMUX" ]; then
    T=$(tmux display -p '#{client_termname}')
    case "$T" in
    *-256color)
         export TERM=tmux-256color
         ;;
    *)
         export TERM=tmux
         ;;
    esac
fi

显然,如果您在一个未附加的会话中创建窗格(client_termname将为空),这将默认为tmux,如果您将一个会话附加到多个客户端,则为来自最近使用的客户端的术语。

如果您不想在shell中这样做,可以使用客户端附加的钩子来更改默认终端,但这只适用于新窗格,而不适用于现有窗格。

另一种选择是始终使用tmux-256颜色运行,并让tmux在外部终端不能处理256种颜色时将颜色翻译下来。

所有常见问题中关于Tc的东西都是关于RGB颜色(真正的颜色),而不是你要问的东西。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/554432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档