必须设置 FORCE_COLOR=1 和 TERM=xterm-256color(macOS/Linux)或 xterm-direct(Windows),并启用 terminal.integrated.gpuAcceleration: "on",才能正确支持 256 色和真彩色输出。

terminal.integrated.env.* 必须设 FORCE_COLOR=1
VSCode 终端默认不向子进程声明自己是“彩色终端”,很多工具(如 jest、webpack、pip、exa)会因此禁用 ANSI 输出。即使你配好了 256 色,它们仍输出纯文本。
- 在
settings.json中为对应平台显式注入环境变量:"terminal.integrated.env.osx": {"FORCE_COLOR": "1"}、"terminal.integrated.env.linux": {"FORCE_COLOR": "1"}、"terminal.integrated.env.windows": {"FORCE_COLOR": "1"} - Windows 上若用 PowerShell,还需确保
$PSStyle.OutputRendering = 'Ansi'已写入$PROFILE,否则Write-Host -ForegroundColor类命令仍不生效 - 别依赖
NO_COLOR环境变量自动检测——VSCode 终端常被识别为非 TTY,FORCE_COLOR是最直接的绕过方式
TERM 必须设为 xterm-256color 或 xterm-direct
VSCode 不读取系统 ~/.Xresources 或 shell 的 TERM 值,它只信任自己启动时传入的环境变量。如果 TERM 是 xterm 或 linux,256 色和真彩色转义序列会被忽略或降级为 16 色。
- 在
terminal.integrated.profiles.*配置中,为 shell 显式加"env": {"TERM": "xterm-256color"}(macOS/Linux)或"env": {"TERM": "xterm-direct"}(Windows Terminal 兼容性更好) - 验证是否生效:在终端里运行
echo $TERM,输出必须匹配你设的值;再运行printf '\033[38;5;196mRED\033[0m\n',应看到鲜红色而非灰块 - 不要用
screen或tmux包裹——它们可能截获并重映射颜色,导致 256 色失真
workbench.colorCustomizations 不影响 256 色/真彩色
terminal.ansi* 系列只管标准 16 色(0–15)及其亮色(8–15),对 3[38;5;Nm(256 色)和 3[38;2;R;G;Bm(真彩色)完全无感。这些高级颜色由终端模拟器直通渲染,跳过 VSCode 的颜色映射层。
- 这意味着:你配了
"terminal.ansiRed": "#FF0000",对\033[38;5;196m没任何作用;后者显示什么颜色,取决于 GPU 渲染器+字体+显示器 gamma,VSCode 不干预 - 真彩色支持需 VSCode ≥ 1.77 + 启用 GPU 加速(
terminal.integrated.gpuAcceleration: "on"),否则部分 RGB 值会偏暗或发灰 - 如果发现真彩色发白或饱和度低,优先检查
terminal.integrated.gpuAcceleration是否为"on",而不是去改workbench.colorCustomizations
字体与 GPU 渲染必须对齐
256 色和真彩色对渲染路径更敏感。同一段 \033[38;2;255;105;180m(粉红),在 Canvas 渲染下可能偏紫,在 WebGL 下才准确还原。
- 确认已启用:
"terminal.integrated.gpuAcceleration": "on"(不是true,必须是字符串"on") - 字体推荐使用支持 subpixel rendering 的等宽字体,如
Cascadia Code(Windows)、JetBrains Mono(macOS/Linux);避免用Monaco或Consolas在高 DPI 下渲染真彩色 - Linux 用户若用 X11,需确保
glxinfo | grep "OpenGL renderer"有输出;Wayland 下需确认 VSCode 是以 native 方式启动(非 Flatpak/Snap 封装版)
256 色和真彩色不走 VSCode 的语义色映射逻辑,它们是“直通通道”。配错 TERM 或漏掉 FORCE_COLOR,再漂亮的调色板也出不来;而 GPU 渲染开关和字体选择,才是决定最终色彩精度的关键变量。


















