VSCode终端中文重叠与乱码本质不同:重叠是渲染层问题(字体链非等宽、lineHeight过小、GPU加速不同步),需设terminal.integrated.fontFamily为含monospace的等宽字体链、gpuAcceleration为off、lineHeight≥1.2;乱码是编码错配(UTF-8与GBK/CP936不一致),须分别检查PowerShell输出编码、WSL locale及Python环境变量。

VSCode终端中文重叠和乱码不是一回事,但常被混为一谈:重叠是渲染层对齐失败(字体+行高+GPU),乱码是编码解码错配(UTF-8 vs GBK/CP936)。两者必须分开排查,改错方向会白忙半天。
terminal.integrated.fontFamily 必须是等宽字体链,且含 monospace 回退
只写 "Microsoft YaHei" 或 "SimSun" 就会重叠——它们不是等宽字体,终端光标无法准确定位,导致中英文字符视觉挤压、换行错位。正确写法是用逗号分隔的等宽字体链,并以 monospace 保底:
"terminal.integrated.fontFamily": "'Cascadia Code', 'JetBrains Mono', 'Fira Code', monospace"- 字体名含空格必须用单引号包裹,否则 JSON 解析失败,VSCode 静默 fallback 到系统默认(通常是
Consolas,但在中文 Windows 下可能降级为SimSun) - Windows 用户还需右键终端标题栏 →「属性」→「字体」选项卡 → 手动选
Cascadia Code或Consolas;仅改 settings.json 不生效 - Linux/WSL 用户需确认字体已安装:
fc-list | grep -i "cascadia\|jetbrains",没输出就得手动安装并运行fc-cache -fv
terminal.integrated.gpuAcceleration 设为 off 能立刻缓解打字重叠
重叠最常见于 Windows + Intel 核显 + 混合缩放(如 125% DPI)场景,本质是 Electron 的 GPU 渲染路径与字体光栅化不同步,表现为“按键瞬间字母糊成一团,松开才弹开”。这不是字体或编码问题,关掉硬件加速即可:
- 在设置中搜索
gpuAcceleration,把terminal.integrated.gpuAcceleration改为"off" - 必须关闭所有已打开的终端页签(
Ctrl+Shift+P→Terminal: Kill Terminal),再重新打开(Ctrl+Shift+`);reload window 或重启 shell 都不生效 - 该设置影响终端子进程自身的渲染层,和编辑器 UI 的 GPU 设置无关
- 若你同时用中文输入法,可额外加全局配置
"disable-hardware-acceleration": true(影响整个 VSCode)
终端乱码要查三处编码:PowerShell / WSL / Python 输出链
乱码是解码错误,典型现象是中文显示为 ???、 或“锟斤拷”,根源在终端进程读取字节流时用了错误的字符集。重点检查以下三处:
- PowerShell 中执行
[Console]::OutputEncoding,若返回System.Text.ASCIIEncoding或System.Text.UTF8Encoding以外的值(如GBK),需运行:$OutputEncoding = [System.Text.Encoding]::UTF8,并加到$PROFILE中 - WSL 中执行
locale,确保LANG和LC_ALL是zh_CN.UTF-8或en_US.UTF-8;否则在~/.bashrc或~/.zshrc末尾添加:export LANG=en_US.UTF-8 - Python 脚本输出中文时,若终端仍乱码,说明 Python 进程本身没走 UTF-8:在脚本开头加
import sys; sys.stdout.reconfigure(encoding='utf-8')(Python 3.7+),或设环境变量PYTHONIOENCODING=utf-8
terminal.integrated.lineHeight 小于 1.2 就容易“贴脸”
即使字体和 GPU 都调对了,terminal.integrated.lineHeight 留默认值 1.0 也会让字符上下紧贴,尤其在 Cascadia Code PL 或 Fira Code 这类带 Powerline 符号的字体下,视觉上就是“重叠”:
- 设为
1.2是跨平台安全值;Retina 屏或高 DPI 可试1.25~1.35 - 值低于
1.0(如0.9)会加剧重叠,绝对不要试 - 该参数独立于
fontSize,只控制行间距,不影响字体大小 - 别忽略它——这是解决“看起来重叠但实际没乱码”的最快手段
真正麻烦的是重叠和乱码同时发生:比如你看到“你好”两个字挤在一起,还带着“烫烫烫”。这时得先关 gpuAcceleration、调 lineHeight、换字体链,把重叠压下去;再逐层查 PowerShell、WSL、Python 的编码链,定位哪一环在用 GBK 解 UTF-8 字节。顺序错了,修半天也白搭。


















