VSCode“首选语言”分界面语言和文件语言模式两层:界面语言必须严格配置locale.json(如{"locale":"zh-cn"}),路径正确并彻底退出重启才生效;files.defaultLanguage对新建文件几乎无效,应保存为带扩展名文件或使用vscode-new-file插件。

VSCode 的“首选语言”不是单一开关,而是分两层:界面语言(UI language)和文件语言模式(language mode)。改错地方,重启再多次也没用。
改界面语言必须写对 locale.json 并彻底重启
VSCode 不再通过设置界面下拉菜单或 settings.json 控制界面语言。它只认一个文件:locale.json,且值必须严格匹配 BCP 47 标准:
- 简体中文:写
{"locale": "zh-cn"},不能是zh_CN、zh-hans或带空格的"zh-cn " - 繁体中文:写
{"locale": "zh-tw"},zh-Hant或Chinese (Traditional)全无效 - 英文:写
{"locale": "en"},不是en-us(虽然也能 fallback,但不推荐) - 文件路径必须准确:
- Windows:
%APPDATA%\Code\User\locale.json - macOS:
~/Library/Application Support/Code/User/locale.json - Linux:
~/.config/Code/User/locale.json
- Windows:
- 改完后必须彻底退出 VSCode:关掉所有窗口 + 杀掉后台进程(Windows 任务管理器里结束所有
Code.exe,macOS 活动监视器搜Electron,Linux 执行pkill -f 'code'),再重开
别装第三方“中文插件”,官方语言包已内置
VSCode 自 1.13 起把 zh-cn 和 zh-tw 等主流语言包直接打进主程序,不需要额外安装扩展。装了反而容易出问题:
- 搜索
Chinese (Simplified) Language Pack for Visual Studio Code是微软官方扩展(ID:ms-ceintl.vscode-language-pack-zh-hans),可装,但不是必须 - 看到名字含“汉化”“中文补丁”“一键中文”的第三方扩展,一律跳过——多数已停更,有的会注入广告、破坏命令面板编码
- 装了官方包但没改
locale.json?界面照样英文;改了locale.json但没装官方包?中文界面会回退成方块或英文
files.defaultLanguage 对新建文件几乎无效
很多人想让 Ctrl+N 新建的空白文件默认是 Python 或 Markdown,于是去设 files.defaultLanguage。这配置在当前版本(1.90+)中已降级为“瞬时占位符”:
- 它只在文件创建后、未输入任何字符、未获得焦点、未保存的极短时间内生效
- 你按 Ctrl+N → 看到 untitled-1 → 想打
print,结果刚敲第一个字母,语言模式就被内容识别覆盖成 Python —— 这不是 bug,是设计如此 - 真正可靠的做法只有两个:
- Ctrl+N → 立即按 Ctrl+S,保存为
untitled.py(带扩展名),VSCode 自动绑定语言模式 - 装
vscode-new-file插件,右键菜单直接选语言生成对应扩展名文件
- Ctrl+N → 立即按 Ctrl+S,保存为
语言配置会被更高优先级设置覆盖
VSCode 的语言设置有明确优先级:启动参数 > 工作区设置 > 用户设置。你以为改了 locale.json 就万事大吉,其实可能被下面任一覆盖:
- 项目根目录下
.vscode/settings.json里写了"locale": "en"—— 直接删掉或注释这行 - 你是用终端 alias 启动的,比如
alias code='code --locale=en'—— 检查~/.bashrc或~/.zshrc - 用了 Remote-SSH:本地改了没用,得登录远程机器,删掉远程端的
~/.config/Code/User/locale.json(Linux/macOS)或%APPDATA%\Code\User\locale.json(Windows)
最常被忽略的是 Remote-SSH 场景下改了本地却忘了远程,或者托盘进程没杀干净导致新窗口复用旧 locale 环境。


















