最可靠方式是重命名并清空User目录而非仅删settings.json;需先关闭Settings Sync、退出VSCode,再重命名User目录为User_backup,重启后验证问题是否解决。

直接删掉 settings.json 和 User 目录最可靠
VSCode 没有“一键恢复默认”的菜单项,所谓「重置设置」本质是清空你手动改过的所有配置。真正起效的方式只有两个:要么逐项删 settings.json 里的内容,要么连整个用户配置目录一起清掉。后者更彻底,尤其当你装过一堆插件、改过 keybindings.json 或 snippets 后,残留项极难手动清理干净。
常见错误现象:Ctrl+, 打开设置界面点「Reset Setting」只重置当前高亮项;用「Open Settings (JSON)」删光内容后重启仍异常——因为 keybindings.json、tasks.json、插件自己的存储(如 extensions/xxx/storage)还在生效。
- Windows 路径:
%APPDATA%\Code\User\ - macOS 路径:
$HOME/Library/Application Support/Code/User/ - Linux 路径:
$HOME/.config/Code/User/
删之前建议先关掉 VSCode,再重命名该目录(比如改成 User_backup),不是直接删——万一插件许可证或自定义 snippet 真有不可逆依赖,还能翻出来救急。
重装 VSCode 前先确认是否真需要「全盘重置」
很多人以为配置乱了就得重装,其实多数问题出在某几个关键配置上。比如 "editor.fontSize" 错写成字符串导致界面缩放崩坏、"files.associations" 配错让所有 .js 文件用 Markdown 解析器打开、或者 "workbench.startupEditor" 设成 "none" 后再也打不开欢迎页。
使用场景:刚改完设置就卡死/闪退/语法高亮全灭/快捷键失效,且能定位到最近一次修改的文件。
- 优先检查
settings.json里是否有语法错误(多逗号、少引号、值类型错,比如把布尔值写成"true"字符串) - 临时禁用所有插件:
code --disable-extensions启动,看是否恢复正常 - 启动时跳过用户配置:
code --user-data-dir=/tmp/vscode-test(Linux/macOS)或code --user-data-dir="%TEMP%\vscode-test"(Windows),验证是否纯配置问题
sync 开启状态下重置会同步回云端,务必先关掉
如果你开了 Settings Sync,删本地配置后重启 VSCode,它会在几秒内自动从 GitHub/GitLab 账户拉取上次同步的设置,等于白干。这不是 bug,是设计如此。
性能 / 兼容性影响:Sync 功能默认开启时,即使你本地删了 User 目录,只要登录账户没退出、没关 sync,重启后所有历史配置(包括你忘了的、别人共享给你的、旧项目遗留的)都会原样恢复。
- 关闭方法:左下角齿轮图标 → 「Settings Sync: Turn Off」→ 确认「Turn Off and Reset Local State」
- 别只点「Sign Out」,那不关 sync,只是登出账户
- 关掉后再删
User目录,重启才真正干净
重置后插件不会自动重装,但部分插件状态会丢
删 User 目录不影响 extensions 文件夹本身,所以插件二进制文件还在,但插件的启用状态、配置项、缓存数据(比如 Prettier 的 last-used config、ESLint 的 workspace ignore list)全没了。VSCode 启动后只会列出已安装插件,但默认全部禁用,得手动点「Enable」。
容易踩的坑:settings.json 里写的插件专属配置(如 "prettier.semi": false)虽然没了,但插件自己可能在 globalStorage 或 workspaceStorage 里存了持久化状态,这些不会被重置操作清除,可能造成行为不一致。
- 想彻底清插件状态:一并删掉
globalStorage目录(同级于User) - 但注意:某些插件(如 GitLens、Jupyter)的 license key 就存在这里,删了要重新输
- 如果只是想保留插件但重置其配置,单独删对应插件在
globalStorage下的子目录即可
最麻烦的其实是 workspace 级配置:每个项目根目录下的 .vscode/settings.json 不受影响,得进项目手动删。这点常被忽略,重置后打开老项目,发现设置还是老样子——因为根本没动它。










