插件安装后 editor.fontfamily 被重置为非等宽中文字体,导致代码排版异常;需手动配置含等宽字体和 monospace 的 fontfamily 栈,并同步设置 terminal.integrated.fontfamily,同时检查工作区 settings.json 和文件编码(utf-8 无 bom)。

插件安装后 editor.fontFamily 被重置为非等宽字体
中文语言包(如 Chinese (Simplified) Language Pack)安装后,VSCode 会自动向 settings.json 注入默认字体配置,把 editor.fontFamily 设为 "Microsoft YaHei" 或 "PingFang SC" —— 这些是系统 GUI 字体,非等宽、无代码优化、不支持连字,导致括号错位、0/O 难区分、注释缩进塌陷。
这不是 bug,而是语言包的“友好 fallback”逻辑:它假设你没配字体,就用本地最易读的中文字体顶上。但对写代码来说,这等于直接废掉排版基础。
- 检查方式:打开
settings.json,搜editor.fontFamily,如果值是单个中文字体名(没逗号、没英文等宽字体前置),基本就是被插件覆盖了 - 修复动作:删掉插件自写的那一行,手动补上带 fallback 的等宽栈,例如:
"editor.fontFamily": "'Fira Code', 'JetBrains Mono', 'Cascadia Code', 'Consolas', 'monospace'" - 注意单引号必须包裹每个字体名,
monospace是保底项,不能省;末尾不加逗号
terminal.integrated.fontFamily 没同步导致终端仍乱码
编辑器里中文正常了,但底部 Terminal 还是方块或问号?因为插件只动了编辑器字体,终端字体配置完全独立,且默认不会 fallback 到你刚设的等宽字体栈。
Windows 用户尤其容易踩这个坑:PowerShell/CMD 默认用 Consolas,但它不支持中文;即使你装了 Microsoft YaHei,VSCode 也不会自动把它塞进终端字体链里。
- 必须在同一个
settings.json里显式配置:"terminal.integrated.fontFamily": "'Cascadia Code', 'Microsoft YaHei', 'monospace'" - Linux/macOS 用户请优先选
'Noto Sans CJK SC'或'WenQuanYi Micro Hei',避免依赖 Windows 字体名 - 改完要关掉所有已打开的终端页签,再按
Ctrl+Shift+`新建一个才生效 —— 复用旧终端不会刷新字体
工作区 settings.json 覆盖全局修复
你在用户设置里修好了字体,但打开某个项目后又变回细字体、发虚?大概率是项目根目录下有 .vscode/settings.json,里面写了 editor.fontFamily 或 terminal.integrated.fontFamily,它优先级高于全局设置。
这类工作区配置常见于团队协作项目,目的是统一开发环境,但往往忽略中文字体兼容性,直接抄了 macOS 或 Linux 的默认值。
- 检查路径:
.vscode/settings.json→ 打开它,搜fontFamily - 如果存在,要么删掉相关字段(让其继承全局),要么把值改成和全局一致的等宽字体栈
- 不想改项目配置?可在用户设置里加前缀强制覆盖:
"[javascript]": { "editor.fontFamily": "'Fira Code', 'monospace'" },但仅限特定语言,不推荐
文件编码仍是 UTF-8(无 BOM)才能真正显示中文
字体全配对了,终端也刷出来了,但 Python print("你好") 还是乱码?问题可能不在 VSCode,而在文件保存编码或运行时环境。
VSCode 编辑器显示中文 ≠ 程序能输出中文。关键看三点:源文件编码、终端当前代码页、Python 运行时的 PYTHONIOENCODING。
- 右下角状态栏点编码名(如
UTF-8),选Reopen with Encoding → UTF-8;若显示灰掉,先Ctrl+S保存一下再试 - 确认保存动作是
Save with Encoding → utf8(注意全小写、无短横、无 BOM),不是UTF-8 with BOM - Windows 下还需确保终端启动即用 UTF-8:在
settings.json加"terminal.integrated.profiles.windows": { "PowerShell": { "args": ["-NoExit", "/c", "chcp 65001"] } }











