vscode终端字体重叠主因是等宽字体链未兜住中文或终端渲染未识别字体度量,需设terminal.integrated.fontfamily为“cascadia code, microsoft yahei, monospace”,windows用户还需右键终端→属性→字体手动指定,并同步调整powershell编码、wsl字体及code runner环境变量。

VSCode终端字体重叠不是字体本身问题,而是等宽字体链未兜住中文、或终端渲染层未正确识别字体度量——多数情况只需改terminal.integrated.fontFamily并手动确认系统终端字体设置。
字体重叠 + 中文显示为方块?先看是不是等宽字体失效
“字体重叠”常被误判,实际是中文字体非等宽导致光标错位、字符挤压。VSCode终端必须用真·等宽字体(如Cascadia Code),而Microsoft YaHei、SimSun等虽能显示中文,但不是等宽,直接填进terminal.integrated.fontFamily就会出问题。
- 检查当前设置:
Ctrl + ,搜索terminal.integrated.fontFamily,确认值是否含非等宽字体(如只写了"Microsoft YaHei") - 正确写法应是字体链:例如
"Cascadia Code", "Microsoft YaHei", monospace—— 前者兜英文/符号,后者兜中文,monospace保底 - Windows 用户必须额外右键终端 → 「属性」→ 「字体」选项卡 → 手动选
Cascadia Code或Consolas;仅改 VSCode 设置不生效 - 别用
SimSun当主力终端字体:它在 cmd/powershell 下会触发 GDI 渲染降级,导致字距计算错误,表现为“两个字挤成一个”或光标悬停位置偏移
终端里中文正常但字母/数字重叠?可能是字体回退失败
当 terminal.integrated.fontFamily 里第一个字体(如 Cascadia Code)缺中文支持,而第二个字体(如 Microsoft YaHei)又无法正确参与等宽对齐时,VSCode 会把中英文混排强行塞进同一行高,造成视觉重叠。
- 验证方式:在终端运行
echo "abc你好xyz",观察是否 “你好” 占两格、“abc” 和 “xyz” 被压缩到同一水平线 - 解决方案:换用原生支持中英文等宽的字体,例如
"JetBrains Mono", "Noto Sans CJK SC", monospace - 若用 WSL,确保 Linux 端已安装对应字体(如
sudo apt install fonts-noto-cjk),否则 VSCode 会 fallback 到无中文的默认字体 - 禁用字体平滑:
terminal.integrated.fontLigatures设为false,某些字体开启连字后会干扰宽度计算
改了字体还是重叠?检查终端代码页和输出编码是否冲突
字体重叠有时是假象——实际是乱码残留导致渲染错乱。比如 chcp 65001 已执行,但 PowerShell 的 $OutputEncoding 仍为 Default,Python 输出的 UTF-8 字节被 GBK 解码成无效字符,终端尝试渲染乱码时会破坏排版流。
- 在 PowerShell 终端运行:
[Console]::OutputEncoding,应返回System.Text.UTF8Encoding;否则需在$PROFILE末尾加[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - 确认
terminal.integrated.env.windows包含{"PYTHONIOENCODING": "utf8"},大小写敏感,UTF-8无效 - 关闭所有已打开终端(不只是关标签页,要关进程),再按
Ctrl + Shift + `新开——旧终端不会刷新字体或编码状态 - 如果用了 Code Runner 插件,检查其执行命令是否含
chcp 65001 &&,否则子进程继承的是原始 GBK 环境
真正麻烦的点在于:字体、代码页、输出编码、终端进程这四层必须全部对齐,缺一不可。很多人只调了其中一两项就以为搞定,结果隔天新开终端又重叠——因为没关干净旧终端,或者忘了 PowerShell 的 $PROFILE 需要手动创建。











