这不是编辑器坏了,而是打开了只读的defaultSettings.json或权限/配置导致锁定;应通过命令面板执行“Preferences: Open Settings (JSON)”打开真正的用户级可编辑settings.json。

直接说结论:这不是编辑器坏了,而是你当前打开的 settings.json 根本就不是那个能改的文件,或者系统权限/配置把它锁死了。90% 的情况属于路径选错或权限没放开。
为什么打开 settings.json 会显示只读?
VS Code 里有两套“设置文件”:一个是只读的默认配置(defaultSettings.json),另一个才是你该改的用户配置(settings.json)。如果你是点开左侧设置界面后右上角点“{}”图标,或者从资源管理器里手动双击某个 settings.json 打开的,大概率打开了只读副本。
- 默认设置视图里的“{}”按钮,打开的是
defaultSettings.json—— 它天生只读,改不了 - 资源管理器里看到的
settings.json可能是工作区级的,但当前没激活对应工作区,导致实际加载的是只读模板 - 远程开发(如 Remote-SSH)下,你本地看到的路径可能映射到远程只读文件系统
怎么打开真正可编辑的 settings.json?
唯一稳的操作:用命令面板直奔目标文件,绕过所有 UI 误导。
- 按
Ctrl + Shift + P(Windows/Linux)或Cmd + Shift + P(Mac)呼出命令面板 - 输入
Preferences: Open Settings (JSON),回车 —— 这个命令永远打开用户级可写settings.json - 如果想改当前工作区的设置,输入
Preferences: Open Workspace Settings (JSON) - 别信资源管理器里显示的路径名,也别点设置页右上角那个“{}”,那是个坑
明明路径对了,还是提示“无法在只读编辑器中编辑”
这时候问题不在 VS Code,而在操作系统或配置项。先看右下角状态栏有没有 Readonly 标签,有就说明系统层权限被卡住了。
- Windows:右键
settings.json→ “属性” → 取消勾选“只读” → 点“确定” - macOS/Linux:终端执行
chmod +w ~/.config/Code/User/settings.json(路径以实际为准) - 检查是否启用了
files.readonlyInclude配置项,比如误把"**/settings.json"加进去了 —— 这个 glob 会强制只读,删掉或修正路径即可 - 插件干扰:禁用
Code Runner或类似运行类扩展,它们有时会劫持编辑器状态;临时禁用全部插件测试一下
改完保存失败,提示“NoPermissions”
VS Code 已经检测到你没权限写入,但没拦住你编辑 —— 它允许输入,只在 Ctrl+S 时才报错。这是最容易被忽略的设计细节。
- 确认文件父目录也有写权限(尤其 macOS/Linux 下,
chmod只改文件不改目录没用) - 如果用 Git 管理配置,检查
git config core.filemode是否为false,否则 Git 可能偷偷重置文件权限 - 远程开发场景下,权限判断发生在远程机器,本地改
files.readonlyInclude没用,得去远程端执行chmod - 重启 VS Code 后再试 ——
files.readonlyInclude修改后必须重启才生效,已打开的标签页不会动态响应
最麻烦的情况是:你确认路径、权限、配置都对,但保存仍失败。这时候得查进程占用 —— Windows 上用 Process Explorer 搜 settings.json,macOS/Linux 用 lsof -i | grep settings,看有没有其他程序锁着它。


















