settings.json语法错误会导致整个配置静默失效;vscode不报错,但遇//注释、末尾逗号、引号不闭合或单引号时直接跳过加载,显示默认设置,误以为配置丢失。

settings.json 语法错误会让整个配置静默失效
VSCode 不会报错,但只要 settings.json 里有单行注释 //、末尾多余逗号、引号不闭合或用了单引号,它就直接跳过加载——你看到的是默认设置,误以为“插件配置丢了”。
检查方法:用命令面板运行 Preferences: Open Settings (JSON),肉眼扫一遍是否符合纯 JSON 规范(双引号、无注释、无拖尾逗号)。不确定时,先清空内容只留 {},保存重启;如果界面变干净了,说明原文件确实被忽略了。
常见坑:
- 从网上复制的配置常带
//注释,粘贴后必须手动删掉 - 用其他编辑器编辑过
settings.json,可能引入不可见 Unicode 字符(如零宽空格) - 某些插件自动生成的配置(如 Prettier、ESLint)会悄悄写入非法字段,需人工校验
别直接拷贝 .vscode/extensions 文件夹
.vscode/extensions 是解压后的运行时产物,不是可移植包。跨系统、跨 VSCode 版本、甚至跨 CPU 架构(x64 → ARM64)复制,大概率导致插件图标消失、设置页空白、或报错 Cannot find module './extension'。
正确做法是导出带版本号的 ID 列表:
- 执行
code --list-extensions --show-versions > extensions.txt(注意必须加--show-versions,否则恢复时可能装上不兼容新版) - 恢复时用
cat extensions.txt | xargs -I {} code --install-extension {} --force(--force跳过“已存在”提示) - Linux/macOS 下建议加
timeout 120防卡死;Windows 建议逐行执行,避免xargs解析空格失败
Settings Sync 不同步这些关键东西
即使开了 Settings Sync,以下内容仍不会上传,必须单独备份:
-
.vscode/目录下的tasks.json、launch.json、extensions.json(项目级配置) - 扩展自身的配置文件,比如
.prettierrc、.eslintrc.js、python.defaultInterpreterPath这类路径设置 -
%USERPROFILE%\.ssh\config和known_hosts(Remote-SSH 必需) - AI 类插件的登录态和缓存(如 GitHub Copilot、Tabnine 的本地 token)
这些全得靠手动归档或纳入 Git 管理。尤其 python.defaultInterpreterPath 这种绝对路径,在新机器上不改必报错。
跨平台迁移时快捷键和路径要重审
Windows 的 ctrl+ 快捷键在 macOS 上得对应 cmd+,但 keybindings.json 不会自动转换。直接复制过去,快捷键就失灵。
同样,files.exclude 或 terminal.integrated.env.linux 这类带平台后缀的设置,在非目标系统下会被忽略,甚至触发警告。
建议:
- 备份前先关掉
sync.enable(防止本地配置被云端覆盖) - 用不同系统分别导出
keybindings.json,按需合并或标记平台条件 - 所有路径类设置(如
python.defaultInterpreterPath)统一用变量替代:"${env:HOME}/.pyenv/versions/3.11/bin/python"
最易被忽略的一点:插件重装后首次启动,VSCode 会“激活扩展”,这个过程不显示进度条,也不报错,但很多插件(尤其是含 native 模块的,如 ms-python.python 或 esbenp.prettier-vscode)需要等右下角通知说“Extensions installed”才算真正就绪——此时再重启 VSCode,配置才真正生效。











