直接修改 editor.fontfamily 即可,但必须使用带回退机制的等宽字体栈,每个字体名须与系统注册的完整英文名严格一致(含大小写、空格、连字符及后缀),如 windows 用 "microsoft yahei mono" 而非 "微软雅黑",macos 用 "pingfang sc",linux 用 "noto sans cjk sc",并配以 "'fira code', 'noto sans cjk sc', 'pingfang sc', 'microsoft yahei mono', 'monospace'" 格式,同时调整 editor.fontsize、editor.lineheight 和禁用 editor.fontligatures 以优化中英文混排效果。

直接改 editor.fontFamily 就行,但只写一个中文字体名(比如 "Microsoft YaHei")大概率失效——它必须是带回退机制的字体栈,且每个名字都得和系统注册的全名严丝合缝。
为什么单写“微软雅黑”没用
VSCode 不自带中文字体,它只调用系统已安装字体。你填的每个字体名,必须和系统字体管理器里显示的「完整英文名」完全一致:大小写、空格、连字符、甚至末尾的 Regular 或 Mono 都不能错。
- Windows 上
Microsoft YaHei是常规版,但编辑器需要等宽字体,应优先用Microsoft YaHei Mono(需单独下载安装) - macOS 的
PingFang SC是系统自带,但某些精简版或老系统可能缺失;可用fc-list :lang=zh | head -n 5命令查真实名称 - Linux(如 Ubuntu)常用
Noto Sans CJK SC,但必须确认已执行sudo apt install fonts-noto-cjk(Debian/Ubuntu)或对应包 - 填了
"SimSun"却显示方块?因为SimSun不是等宽字体,VSCode 编辑器区域会静默跳过它
怎么写一个靠谱的中英文字体栈
核心逻辑是:前面放主力英文字体(带连字、等宽),中间接一到两个支持中文的等宽字体,最后用通用兜底项收尾。顺序 = 回退优先级。
- 推荐配置(跨平台兼容性较好):
"'Fira Code', 'Noto Sans CJK SC', 'PingFang SC', 'Microsoft YaHei Mono', 'monospace'" - 单引号必须成对,逗号后加空格,
monospace不加引号(它是 CSS 通用关键字) - 不要用
"sans-serif"作兜底——它不保证等宽,终端和编辑器混排时容易错行 - 如果只在 Windows 开发,可去掉
PingFang SC;纯 macOS 环境则去掉Microsoft YaHei Mono
改完还是发虚、挤、光标错位?调这两个参数
中文字体的度量(metrics)和西文字体差异大,尤其在等宽场景下。光改 fontFamily 不够,还得同步调:
-
editor.fontSize:中文视觉上偏大,建议从14或15起试,比英文环境略大更舒服 -
editor.lineHeight:关键!设为24或26(单位是像素),避免中英文混排时行高塌陷、光标悬空 - 关掉
editor.fontLigatures:连字对中文无意义,开启反而导致标点位置偏移、渲染模糊
终端里的中文还是乱码或宽度异常
编辑器字体设置不影响集成终端(Ctrl + `)。终端需单独配,且必须满足两个硬条件:
- 终端字体栈要和编辑器一致(同样填
"'Fira Code', 'Noto Sans CJK SC', 'monospace'"),路径是Terminal > Integrated: Font Family - 确认终端编码为 UTF-8:
locale命令输出中必须含LANG=zh_CN.UTF-8(Linux/macOS)或系统区域设为「中文(简体,中国)」(Windows) - 禁用非等宽中文字体(如
SimSun、NSimSun),它们会让中文字符占两个英文字符宽度,导致换行错乱
最容易被忽略的是字体名大小写和空格——VSCode 不报错,只是静默跳过错误项,然后 fallback 到默认英文字体。所以别抄别人配置,先用系统命令查自己机器上真实存在的字体全名。











