VSCode无法保存settings.json的根本原因是文件系统权限错误,而非编辑器故障;需检查并修正文件归属(chown)、用户写权限(chmod u+w),WSL下须启用metadata挂载选项,Git状态不影响文件系统写入判定。

VSCode 无法保存配置文件,90% 是文件系统权限没设对,不是编辑器坏了。 它不认“只读设置”,只看 fs.accessSync(path, fs.constants.W_OK) 返回什么。改错地方、用错命令、或在 WSL 里走错路径,都会让你 Ctrl+S 时弹出 EACCES: permission denied 或静默失败。
为什么 settings.json 改了也保存不了?
常见错误是直接编辑 ~/.config/Code/User/settings.json(Linux/macOS)或 %APPDATA%CodeUsersettings.json(Windows),但该文件被系统标记为只读,或归属为 root / Administrator。
- Windows 下右键该文件 → “属性” → 取消勾选“只读”,再点“应用”
- Linux/macOS 执行:
chmod u+w ~/.config/Code/User/settings.json - 如果
ls -l ~/.config/Code/User/显示属主是root,运行:sudo chown -R $USER:$GROUPS ~/.config/Code/User/ - 别碰
chmod 777—— VSCode 启动时会拒绝加载权限过宽的配置文件,反而导致设置不生效
files.readonly 设置对 settings.json 无效?
对,files.readonly 是用来匹配工作区文件的,比如 **/tsconfig.json,它不会作用于 VSCode 自己的配置文件。而且这个字段只影响“保存行为”,不阻止你编辑内容 —— 你照样能输、能删、能 Ctrl+Z,只是按 Ctrl+S 时会弹警告或失败。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 它只在文件打开时生效;已打开的
settings.json需要重新加载窗口(Ctrl+Shift+P→Developer: Reload Window) - 路径必须用
**,写成*settings.json或settings.json都不匹配 - 加了
"files.readonly": ["**/settings.json"]后,你仍可另存为(File → Save As),因为这是绕过只读检查的合法路径
WSL 下改 settings.json 总是 Permission denied
根本原因是:你在 Windows 资源管理器里通过 \wsl$Ubuntuhomeuser.configCodeUser 打开并编辑,此时 Windows 内核驱动(DrivFS)未启用 metadata 挂载选项,POSIX 权限被忽略,chmod 失效,chown 无响应。
- 正确做法:用 Remote-WSL 扩展打开 ——
Ctrl+Shift+P→Remote-WSL: New Window,再进~/.config/Code/User/编辑 - 补救挂载配置:在 WSL 中编辑
/etc/wsl.conf,加入:
[automount] options = "metadata,uid=1000,gid=1000,umask=022"
- 然后终端执行:
wsl --shutdown,再重启 WSL 发行版 - 验证是否生效:
ls -l ~/.config/Code/User/应显示正常 uid/gid,且chmod u+w settings.json不报错
最常被忽略的一点:Git 状态 ≠ 只读状态
你刚 git pull 下来一个 settings.json,它可能被 Git 标记为不可修改(比如在 submodule 或 bare repo 中),但 VSCode 完全不感知 Git —— 它只查文件系统权限。所以即使 git status 显示 “nothing to commit”,fs.accessSync(..., W_OK) 仍可能返回 false。别指望 Git 保护你的配置文件,该设权限还得设。

















