VSCode 的 settings.json 位于用户数据目录而非安装目录:Windows 为 %APPDATA%\Code\User\settings.json,macOS 为 $HOME/Library/Application Support/Code/User/settings.json,Linux 为 $HOME/.config/Code/User/settings.json;直接复制 UI 导出的 JSON 会丢失注释、显式默认值和禁用字段;启用 Settings Sync 时该文件仅为本地差分覆盖层,且同步不包含 snippets/ 和部分平台专属配置;完整迁移需按路径定位、清理旧进程、覆盖文件并重装插件。

VSCode 的 settings.json 不在安装目录里
直接去 Program Files(Windows)、/Applications/Visual Studio Code.app(macOS)或 Linux 的 /usr/share/code 翻找,肯定找不到。VSCode 把用户级配置全放在系统级用户数据目录下,和安装位置完全隔离。
各系统下真实的 settings.json 路径
必须用以下路径,否则导出的是空文件、错位覆盖,或根本不是你改过的那个配置:
- Windows:
%APPDATA%\Code\User\settings.json(文件资源管理器地址栏直接粘贴即可) - macOS:
$HOME/Library/Application Support/Code/User/settings.json(终端执行open ~/Library/Application\ Support/Code/User快速打开) - Linux:
$HOME/.config/Code/User/settings.json
这些路径下还包含 keybindings.json 和 snippets/ 目录——漏掉任何一个,快捷键或代码片段就回不来了。
别用「设置 → 打开设置 (JSON)」后手动复制
这个操作只输出 UI 渲染后的“快照”,会丢失三类关键内容:
- 注释(比如你写在配置后面的
// 临时禁用) - 显式设为默认值的项(如
"editor.minimap.enabled": false,UI 里根本不显示) - 被禁用但仍有语义的字段(如插件关闭时留下的
"prettier.enable": false)
结果就是:你以为导出了全部,其实导入后行为对不上。
Settings Sync 开启时,settings.json 是“本地覆盖层”
如果你登录了 GitHub 或 Microsoft 账户并启用了 Settings Sync,VSCode 就不再把 settings.json 当作主配置源,而是仅记录你“额外改过什么”。此时直接导出它,得到的是差分结果,不是全量配置。
更麻烦的是:同步服务本身不处理 snippets/、不保留禁用插件状态、跨平台时会静默丢弃 terminal.integrated.profiles.windows 这类字段——看着同步成功,实际环境一跑就缺东西。
真正迁移环境时,路径、清理、覆盖、重装插件这四步缺一不可;最易被忽略的是:导入前没退出所有 Code Helper 进程,导致新配置被启动时的旧进程缓存覆盖。











