如何检测当前终端是否支持 256 色或真彩色输出

12次阅读

终端颜色能力可通过三步判断:先查$TERM和$COLORTERM变量确认声明支持,再用ANSI序列实色测试验证256色与真彩色渲染效果,最后借micro、vimftxUI等工具行为交叉印证。

如何检测当前终端是否支持 256 色或真彩色输出

直接运行几条简单命令就能快速判断终端的颜色能力,不需要安装额外工具

检查 $TERM 和 $COLORTERM 环境变量

这两个变量是终端颜色支持的首要线索:

  • 运行 echo $TERM:若输出含 xterm-256colorscreen-256colortmux-256color,说明已声明支持 256 色;若为 xtermlinux,大概率只启用基础 16 色。
  • 运行 echo $COLORTERM:若输出 truecolor24bit,表示终端明确声明支持真彩色;空值或 gnome-terminal 类旧值则需进一步验证。

用 ANSI 序列做实色测试

绕过变量声明,直接让终端渲染颜色,结果最可靠:

  • 测 256 色:执行 curl -s https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/256colors.sh | bash,会显示 0–255 号色块。若编号 16–231 区间色彩丰富、过渡自然,即确认 256 色就绪。
  • 测真彩色:运行 printf "x1b[38;2;255;0;0mredx1b[0m x1b[38;2;0;255;0mGREENx1b[0m x1b[38;2;0;0;255mBLUEx1b[0mn"。三色清晰分明、无偏色或混成灰块,即支持真彩色。

观察实际应用行为

很多工具自带诊断逻辑,可借力验证:

  • micro 编辑器中按 Ctrl+e 输入 set colorscheme solarized-tc(带 -tc 后缀的主题),若界面色彩细腻无断层,说明真彩色生效。
  • 启动 vim 后执行 :set termguicolors?,若返回 termguicolors,再配合 :hi Normal 查看是否显示 guibg=#xxxxxx 类 RGB 值,即可确认 vim 正在使用真彩色渲染。
  • 运行 FTXUI 的颜色示例程序,若能显示平滑渐变而非阶梯状色带,就是真彩色到位的直观证据。

不复杂但容易忽略

text=ZqhQzanResources