vscode终端背景色需单独设置terminal.background,而非editor.background或ui主题配色;必须同步调整terminal.foreground等文字色,并注意powershell等shell自身背景劫持问题。

终端背景色和编辑器主题是两套独立系统
VSCode 的终端(Terminal)默认复用当前颜色主题的 terminal.background,但它不继承编辑器背景(editor.background),也不受 UI 主题的按钮/侧边栏配色影响。想单独改终端背景,必须显式覆盖这个 token,而不是去调主题文件里瞎找。
- 改错地方的典型表现:改了
workbench.colorCustomizations里的editor.background,终端纹丝不动 - 真正起作用的是
terminal.background,它优先级高于主题内置定义 - 高对比度需求下,推荐用纯色(如
#000000或#111111),避免透明度(rgba)——某些 GPU 渲染路径下会失效
在 settings.json 里直接覆盖 terminal.background
别碰主题 JSON 文件,直接改用户设置最稳。VSCode 启动时按顺序加载:内置主题 → 扩展主题 → settings.json,后者能无条件覆盖前两者。
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),搜Preferences: Open Settings (JSON) - 在
"workbench.colorCustomizations"对象里加一行:"terminal.background": "#0d0d0d" - 如果该对象不存在,就新建一个:
"workbench.colorCustomizations": {<br> "terminal.background": "#0d0d0d"<br>} - 改完保存,已打开的终端不会自动刷新背景,关掉再开新终端(
Ctrl+Shift+`)才生效
终端文字颜色也要同步调,否则对比度崩塌
只改背景不调文字色,大概率遇到灰字糊在深灰背景上,或者白字刺眼。终端文本色由 terminal.foreground 控制,必须配套调整。
- 常见搭配:
"terminal.foreground": "#e0e0e0"(比纯白柔和)、"terminal.ansiBlack": "#222"(用于基础 ANSI 黑色,常被用作普通文本底色) - 别依赖
terminal.ansiWhite显示常规文字——它只影响\x1b[37m这类显式 ANSI 白色,而 shell 提示符、命令输出默认走terminal.foreground - 如果用了 zsh + oh-my-zsh,发现提示符颜色异常,大概率是插件硬编码了 ANSI 色号,此时要同步调
terminal.ansiBrightBlue等对应项
Windows 上 PowerShell 默认背景会抢跑
PowerShell 在 VSCode 终端里启动时,会读取自身配置($PROFILE)里的 $Host.UI.RawUI.BackgroundColor,这个值会强行覆盖 VSCode 设置,尤其在 Windows 上高频出现。
- 检查是否被劫持:在终端里运行
echo $Host.UI.RawUI.BackgroundColor,如果返回非Black,就是它干的 - 临时解决:在
$PROFILE里删掉或注释掉类似$Host.UI.RawUI.BackgroundColor = "DarkBlue"的行 - 一劳永逸:在
settings.json中加"terminal.integrated.profiles.windows"配置,强制指定启动命令不加载 profile:"terminal.integrated.profiles.windows": {<br> "PowerShell": {<br> "source": "PowerShell",<br> "args": ["-NoProfile"]<br> }<br>}
terminal.background、文字色配套项、以及底层 shell 自己的背景劫持逻辑。漏掉任何一环,高对比度就变成高迷惑度。











