VSCode没有内置导出命令,所谓“导出设置”仅生成UI渲染快照,会丢注释、漏默认值、忽略Profile结构;真正可靠的是手动复制系统级User目录下的settings.json、keybindings.json、snippets/及code --list-extensions生成的extensions.txt。

VSCode 没有内置命令能真正“导出配置”——所谓“导出设置”按钮只是复制当前 UI 渲染后的 JSON 快照,会丢注释、漏默认值、不包含工作区级或 Profile 级配置,不可用于迁移。
Preferences: Open Settings (JSON) 不是导出命令,而是打开编辑器
很多人点开设置右上角的「… → 导出设置」,结果发现导出的是空文件或格式错乱的 JSON。那其实是 VSCode 1.85+ 加入的一个误导性 UI 元素,它并不生成完整配置,只是把当前 UI 面板里“已修改”的设置项拼成一个片段(比如只含 "editor.fontSize" 和 "workbench.colorTheme"),而像 "files.exclude" 这类带绝对路径的字段,如果没在 UI 里显式改过,就不会出现;注释、缩进、未启用的默认值(如 "editor.minimap.enabled": false)也全被过滤掉。
更关键的是:它完全忽略 Profile 结构。如果你用了 profiles,这个操作导出的内容甚至不含 "profiles" 字段,直接覆盖到新机器会导致 Profile 失效。
code --list-extensions 是唯一靠谱的 CLI “导出”动作
VSCode CLI 确实提供了一个真实可用的导出行为:code --list-extensions。它输出纯文本、每行一个插件 ID,不依赖网络、无 BOM、不带版本号,可直接重定向保存:
-
code --list-extensions > extensions.txt(macOS/Linux) -
code --list-extensions | Out-File -Encoding UTF8 extensions.txt(PowerShell)
注意:--show-versions 输出形如 ms-python.python@2024.12.1,但 code --install-extension 完全不认带 @ 的格式,会报错 Extension 'xxx@yyy' not found。
禁用插件不会出现在结果中——这是设计如此,不是 bug;重装环境时你本就不需要它们。
为什么 code --export-profile 不存在
网上常有人搜 code --export-profile,甚至看到博客写“VSCode 1.90 支持导出 Profile”,这属于严重误传。截至 2026 年 11 月,VSCode 官方 CLI 文档和源码中从未定义过 --export-profile 或 --export-settings 这类参数。所谓“支持”,实际是混淆了 Settings Sync 的云端同步行为,或把第三方脚本当成了内置功能。
Profile 的配置块(如 "my-dev": { "editor.tabSize": 2 })就藏在 settings.json 的 "profiles" 字段里,只能手动提取——没有命令能帮你切出来。
真正要导出的文件,得自己去系统目录翻
所有可迁移的用户配置,都落在系统级用户目录下,不是靠命令生成,而是靠你定位并复制:
- Windows:
%APPDATA%\Code\User\settings.json - macOS:
~/Library/Application Support/Code/User/settings.json - Linux:
~/.config/Code/User/settings.json
同目录下还要一并拿走:keybindings.json、snippets/ 文件夹(不是单个文件)、以及可能存在的 tasks.json(仅当它是用户级而非工作区级时)。
别信「设置 → 打开设置 (JSON)」后 Ctrl+A → Ctrl+C → Ctrl+V —— 那只是渲染快照,不是真实磁盘文件。真实文件必须手动进路径拷贝,否则迁移后快捷键不生效、代码片段消失、Profile 识别失败都是大概率事件。











