最可靠方式是手动导出settings.json和code --list-extensions列表;settings sync因路径错乱、禁用插件丢失、代码片段不同步等问题,不适合环境迁移;需按系统路径定位settings.json,清理绝对路径与平台专属字段后覆盖,并同步keybindings.json和snippets/目录。

直接导出 settings.json 文件 + code --list-extensions 列表,是最可靠、可控性最强的方式。Settings Sync 看似省事,但跨设备时路径错乱、禁用插件丢失、代码片段不同步、远程配置漏掉等问题频发,不适合环境迁移。
怎么找对 settings.json 的真实路径
它不在 VSCode 安装目录里,硬翻 Program Files 或 /Applications/Visual Studio Code.app 会扑空。必须去系统级用户配置目录:
- Windows:
%APPDATA%\Code\User\settings.json(文件资源管理器地址栏直接粘贴即可) - macOS:
~/Library/Application Support/Code/User/settings.json(终端执行open ~/Library/Application Support/Code/User快速打开) - Linux:
~/.config/Code/User/settings.json
别用「设置 → 打开设置 (JSON)」后手动复制内容——那只是 UI 渲染后的快照,会丢注释、格式易错乱,且不包含显式设为默认值的项(比如 "editor.minimap.enabled": false 在 UI 里根本不会显示)。
导出前必须清理的三类危险字段
直接拷贝原 settings.json 到新机器,大概率失效。VSCode 启动时要么静默忽略,要么报错回退到默认值。重点删或注释掉:
-
"python.defaultInterpreterPath"、"python.condaPath":指向本机解释器,换电脑后路径必不存在 -
"files.exclude"或"search.exclude"中含C:\Users\xxx、/Users/xxx、/home/xxx这类绝对路径 -
"terminal.integrated.profiles.windows"等平台专属配置:跨系统导入可能阻断加载
保留通用项如 "editor.fontSize"、"workbench.colorTheme" 即可。全局搜索 C:、/Users/、/home/、:,整行删或加 // 注释。
导入时为什么 settings.json 覆盖后不生效
不是改完保存就立刻起效。常见原因有:
- 目标机器 VSCode 没完全退出:Windows 任务管理器、macOS 活动监视器里确认没有残留的
Code Helper进程 - 用记事本、TextEdit 直接覆盖:它们可能加 BOM 头或用 CR/LF 换行符,VSCode 解析失败后静默回退
- Profile 结构被破坏:VSCode 1.86+ 后
settings.json含"profiles"根对象,直接全量覆盖会删掉该字段,导致 Profile 无法识别。正确做法是先在目标机重置 Profile(设置 → Profiles → 选中目标 Profile → Reset Profile to Default),再把源机对应 profile 块(如"my-dev": { ... })粘贴进去
覆盖完必须重启 VSCode,仅靠 Developer: Reload Window 不触发 Profile 配置重解析。
别漏掉 keybindings.json 和 snippets/
Settings Sync 和 code --list-extensions 完全不碰这两样,但它们是真实工作流的一部分:
-
keybindings.json路径同settings.json目录,只有你改过快捷键才会生成;漏掉它,Ctrl+P行为或自定义 Emmet 快捷键就全没了 -
snippets/是个文件夹,得整个拷出来(Windows:%APPDATA%\Code\User\snippets\;macOS/Linux 类似),它不在settings.json里,也不在 Settings Sync 同步范围,丢了就得重写所有模板
扩展列表也得用命令导出:code --list-extensions > extensions.txt,别截图或手抄 ID —— 插件显示名(如“Python”)和实际 ID(ms-python.python)不一致,手输容易错。











