最可靠方式是直接复制User目录并清理危险字段;需定位系统级配置路径,删除绝对路径、平台专属及插件强依赖配置,用code --list-extensions导出扩展列表,退出VSCode后覆盖文件,Remote环境需单独同步。

直接复制 User 目录是最可靠的方式
VSCode 没有“导出为 ZIP”按钮,所谓“导出到本地”本质就是把用户配置文件完整拷出来。关键不是操作多复杂,而是路径必须对、内容必须全、格式不能被污染。
别用 Preferences: Open Settings (JSON) 后手动复制——它不包含注释、丢掉显式设为 false 的项(比如 "editor.minimap.enabled": false),而且工作区设置可能混入。
- Windows 路径:
%APPDATA%\Code\User\ - macOS 路径:
$HOME/Library/Application Support/Code/User/ - Linux 路径:
$HOME/.config/Code/User/
这个目录下至少要有:settings.json、keybindings.json(如果改过快捷键)、snippets/ 文件夹(不是单个文件)、以及你自定义的 tasks.json 或 launch.json(如果放在 User 级别)。
导出前必须清理三类危险字段
直接把旧机 settings.json 拷过去,新机上大概率静默失效——VSCode 不报错,但相关功能(比如 Python 解释器、文件排除、终端字体)就不起作用。
打开 settings.json,用 Ctrl+F 搜 ": " 后跟引号,重点检查并删掉或注释以下字段:
-
绝对路径类:如
"python.defaultInterpreterPath"、"files.exclude"里含C:\Users\、/home/、/Users/的条目 -
平台专属类:如
"terminal.integrated.profiles.windows"、"terminal.integrated.fontFamily"(macOS/Linux 下可能触发警告甚至阻断加载) -
插件强依赖类:如
"prettier.bracketSpacing"、"todo-tree.tree.showScanModeButton"——新机没装对应插件时,整行被跳过,行为链断裂
扩展列表必须用命令行导出,不能靠 UI
UI 里点“已安装扩展”一页页记?太容易漏。而且 code --list-extensions 输出的是可执行安装的 ID 列表,带版本号还能加 --show-versions。
在终端中运行:
code --list-extensions --show-versions > extensions.txt
生成的 extensions.txt 是纯文本,每行一个扩展 ID(如 ms-python.python@2026.10.1),后续可用脚本批量重装。注意:它不包含禁用状态,禁用的扩展不会出现在列表里——这是正常行为,不是 bug。
Windows PowerShell 用户注意:别用 cmd.exe 执行该命令,PowerShell 中需用 Get-Content extensions.txt | ForEach-Object { code --install-extension $_ };macOS/Linux 用 cat extensions.txt | xargs -I {} code --install-extension {}。
覆盖配置文件时最容易踩的坑
很多人把 settings.json 拖进去就以为完事了,结果重启 VSCode 一点变化没有。问题往往出在覆盖动作本身。
- 务必先退出 VSCode —— 任务管理器 / 活动监视器里确认没有残留的
Code Helper进程 - 不要用编辑器“另存为”覆盖原文件 —— 某些编辑器会偷偷加 BOM 或把换行符改成
\r\n,VSCode 解析失败就静默回退到默认值 - 推荐做法:删掉目标路径下的原
settings.json,再把备份文件粘贴进去;或者用命令行cp -f/robocopy强制覆盖 - Remote 场景要额外处理:
Remote-SSH或WSL的配置在~/.vscode-server/data/Machine/settings.json,不在 User 目录下
真正容易被忽略的是:Settings Sync 开启后,settings.json 会被标记为只读,所有修改必须经由 UI 或命令面板触发同步写入——此时手动覆盖不仅无效,还可能被下次同步自动冲掉。


















