vscode集成终端的颜色由workbench.colorcustomizations控制,包括背景、前景、ansi 16色等,字体大小和行高需配置terminal.integrated.fontsize与lineheight,且设置后需新建终端生效。

终端背景色和字体色由 workbench.colorCustomizations 控制,不是终端主题或 shell 配置
很多人改了 .zshrc 或装了 oh-my-zsh 主题,发现 VSCode 里终端颜色还是不对——因为 VSCode 集成终端(Integrated Terminal)的底色、文字色、光标色等,走的是编辑器自身的 UI 颜色体系,和 shell 渲染逻辑完全隔离。workbench.colorCustomizations 是唯一能直接覆盖这些样式的配置项。
实操建议:
- 打开设置(
Cmd+,或Ctrl+,),搜color customization,点「在 settings.json 中编辑」 - 添加
"workbench.colorCustomizations"对象,里面填"terminal.background"、"terminal.foreground"等键值 - 颜色值必须是十六进制(如
"#0d1117")、RGB("rgb(13, 17, 23)")或支持的命名色(如"black"),不支持 CSS 变量或透明度写法(如rgba()会失效)
terminal.ansi* 系列配色决定命令输出的颜色,比如 ls --color 或 git status
你看到的绿色文件名、红色修改状态,来自终端对 ANSI 转义序列的映射。VSCode 不读取系统 ~/.Xresources 或 TERM 环境变量,而是用内置的 16 色 ANSI 调色板硬编码映射。改错地方,ls 就永远灰扑扑。
实操建议:
- 在
workbench.colorCustomizations里配置"terminal.ansiBlack"到"terminal.ansiBrightWhite"共 16 个键 - 顺序固定:0–7 是基础色,8–15 是亮色(bright),别把
ansiGreen和ansiBrightGreen搞混 - 如果用了深色主题但
git diff的绿色太浅,优先调亮色绿(ansiBrightGreen),而不是基础绿 - 某些 shell 工具(如
exa)默认用亮色,不配ansiBright*就等于没配
字体大小和行高得靠 terminal.integrated.fontSize 和 lineHeight,不是 CSS
想让终端文字更大更舒展?别去改 settings.json 里的 editor.fontSize,那是代码编辑区的。终端字体是独立控制的,而且 lineHeight 必须显式设,否则默认紧凑,字挨着字看不清。
实操建议:
- 加这两项到
settings.json:"terminal.integrated.fontSize": 14"terminal.integrated.lineHeight": 1.4 -
lineHeight推荐 1.3–1.6,小于 1.2 容易粘连,大于 1.8 行间距过大、滚动吃力 - 字体族(
fontFamily)可指定,但注意:Windows 用户若填"Fira Code"却没装该字体,会回退到等宽默认字体,且不报错
改完不生效?检查是否被扩展或远程连接覆盖
常见失效场景不是配置写错了,而是被更高优先级来源劫持:比如安装了 Material Theme 这类 UI 主题扩展,它会自动注入自己的 workbench.colorCustomizations;或者用 Remote-SSH 连服务器时,本地设置根本没同步过去。
排查步骤:
- 临时禁用所有扩展,重启 VSCode,看颜色是否恢复预期
- Remote 场景下,在远程窗口的
settings.json(不是本地的)里重复配置 - 终端右上角齿轮图标 → 「Configure Terminal Settings」→ 确认当前生效的是用户设置,不是工作区设置(后者可能有冲突覆盖)
- 改完保存后,不用重启,但要新开一个终端页签(
Ctrl+Shift+`再按一次),旧终端不会刷新颜色
最麻烦的是多层嵌套:系统终端主题 + shell 配色 + VSCode ANSI 映射 + VSCode UI 覆盖。真正调通,往往得一层层关掉干扰项,再逐个开回来验证。











