settings.json报错95%因json语法非法,如对象末尾多余逗号、缺失花括号、null大小写错误等,vscode直接拒绝解析导致设置失效,须用jsonlint定位错误并完全重启vscode。

settings.json 报错,95% 是因为 JSON 语法不合法,不是权限、插件或网络问题,而是 VSCode 拒绝解析——它连读都不读,更不会写。
settings.json 为什么一加逗号就报错
JSON 标准不允许对象最后一项后面跟逗号,比如 {"editor.fontSize": 14,} 这个结尾的逗号会让整个文件变成非法 JSON。VSCode 内置的 JSON 解析器(基于 jsonc)在遇到这种错误时,不会提示“多了一个逗号”,而是直接放弃加载整份配置,后续所有设置(包括颜色、远程连接、插件行为)都 fallback 到默认值。
- 错误现象:设置保存失败、右下角出现红色波浪线、远程 SSH 连接弹出
CodeExpectedError: Unable to write in - 真实原因:VSCode 尝试把新配置(如
remote.SSH.remotePlatform)写入一个已损坏的 settings.json,但解析失败,写操作被中断 - 注意:
// 注释在 jsonc 模式下是允许的,但仅限于 VSCode 自己的编辑器;一旦你用其他工具(如 Notepad++、OneDrive 同步)保存过该文件,注释可能被删掉或破坏格式,导致开头或结尾缺{或}
怎么快速定位 settings.json 里的非法字符
别靠肉眼扫,也别点图形化设置界面——它可能根本打不开。必须直击源文件并用工具验证:
- 用快捷键
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并执行Preferences: Open Settings (JSON) - 复制全部内容,粘贴到 JSONLint,它会精确告诉你第几行第几个字符出错(例如
Error: Parse error on line 1:通常意味着文件开头少了{或混入了 BOM/全角空格) - 检查常见雷区:
"files.autoSave": "onFocusChange",后面有没有多余逗号;"editor.tokenColorCustomizations": null中的null是否小写;颜色值是否用了rgba()(不支持,只认#rrggbbaa)
修复后颜色/远程功能仍不生效?重启不是 reload
很多用户改完 settings.json 点了 Developer: Reload Window,发现颜色还是黑的、远程还是连不上——这是因为部分 UI 和扩展初始化逻辑只在启动阶段读取一次配置。不重启,workbench.colorCustomizations 和 remote.SSH 相关字段不会重新加载。
- 必须完全退出 VSCode:关闭所有窗口 + 右下角托盘图标也要退出(Windows 上检查任务管理器里是否还有残留的
Code.exe) - macOS 用户注意:
killall -u $USER Code能清掉后台进程;Linux 下可查ps aux | grep code并kill -9 - 如果改完重启仍无效,临时把
settings.json清空为{}再试一次,确认是不是某段自定义配置(比如嵌套在"editor": {}里的tokenColorCustomizations)放错了位置
真正难缠的不是语法错误本身,而是它造成的“静默失效”:你调了一小时主题,却因为一行多余的逗号,让整个 editor.tokenColorCustomizations 区块被跳过;你反复重装 Remote-SSH 插件,结果问题出在本地 settings.json 第 1 行少了个 {。修复永远从文件本身开始,而不是从功能表现倒推。











