VSCode 中文显示异常需显式配置中文字体链:editor.fontFamily 必须前置等宽中文字体(如 Microsoft YaHei Mono),terminal.integrated.fontFamily 需单独设置,fontSize 和 lineHeight 需调大,禁用 fontLigatures,并确保字体名与系统全名一致、配置未被覆盖。

editor.fontFamily 必须显式声明中文字体链
VSCode 默认用 Consolas、Fira Code 这类纯英文字体渲染代码,它们不含中文字符,结果就是注释、字符串里的中文直接 fallback 到系统默认字体——常表现为发虚、断笔、标点挤在一起,甚至显示为方块。这不是“没装字体”,而是字体链根本没兜住中文。
实操建议:
- 打开
settings.json(快捷键Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON)) - 添加或修改
"editor.fontFamily",值必须是逗号分隔的字体名列表,且中文字体靠前,例如:"editor.fontFamily": "'Fira Code', 'Microsoft YaHei Mono', 'PingFang SC', 'Noto Sans CJK SC', 'monospace'"
- 所有字体名必须和系统注册的「字体全名」完全一致:Windows 查「字体设置」、macOS 用「字体册」看「全名」字段、Linux 运行
fc-list :lang=zh | cut -d: -f2 | sort -u - 别只写一个中文字体(如
"Microsoft YaHei"),它不是等宽字体,会导致光标错位;优先选带Mono后缀的变体(如Microsoft YaHei Mono)
fontSize 和 lineHeight 得同步调大
中文字体的度量(metrics)和西文字体不同,尤其在等宽场景下:默认 fontSize: 12 + lineHeight: 0 容易让中文显得局促、行距塌陷、光标对不齐。
实操建议:
- 把
"editor.fontSize"起始设为14或15(比英文环境略大更舒服) - 必须补上
"editor.lineHeight": 24或26(单位像素),避免混排时中文被“压扁” - 禁用
"editor.fontLigatures": true:中文不需要连字,开启反而可能让括号、标点错位
terminal.integrated.fontFamily 不能省
编辑器里中文正常,但集成终端(Ctrl+`)里仍是方块或重叠?这是最常被忽略的点:终端**完全不读取 editor.fontFamily**,它有自己的字体配置项,且必须是真·等宽字体链。
实操建议:
- 在
settings.json中单独设置"terminal.integrated.fontFamily",值建议和editor.fontFamily一致 - Windows 用户务必右键终端窗口 → 「属性」→ 「字体」选项卡 → 手动选
Cascadia Code或Consolas;仅改 VSCode 设置不生效 - 别用
SimSun或NSimSun当主力终端字体:非等宽 + GDI 渲染降级,会导致字距计算错误,表现就是“两个字挤成一个” - Linux(尤其 Docker/Alpine)需先安装
fonts-wqy-zenhei或noto-fonts-cjk,再重启 VSCode
改完必须重启窗口,且检查是否被覆盖
字体配置写进 settings.json 后,只点「重载窗口」往往无效;更隐蔽的问题是:工作区设置、远程开发配置、甚至某些主题插件会悄悄覆盖你的 editor.fontFamily。
实操建议:
- 改完保存后,必须执行
Developer: Reload Window(或直接关掉所有窗口再重开) - 按
Ctrl+Shift+P输入Preferences: Open Settings (JSON),确认editor.fontFamily出现在顶层,不在"[javascript]"这类语言专属块内 - 临时禁用所有插件,只留官方主题,验证是否某插件注入了强制字体规则
- 远程开发(WSL/SSH)场景下,字体配置需同时存在于本地和远程端的
settings.json中


















