唯一可靠方式是用code --list-extensions导出纯文本插件id列表(如ms-python.python),禁用插件不出现,不可加--show-versions,settings.json等配置须单独处理而非写入脚本。

直接用 code --list-extensions,别信界面复制、截图或插件导出功能——它们全不可靠。
为什么code --list-extensions是唯一可信的导出命令
扩展面板里看到的“Python”“Prettier”只是显示名,不是安装 ID;手动复制会漏掉带空格、括号或 Unicode 字符的 ID(比如某些中文定制插件),且无法区分启用/禁用状态。code --list-extensions 输出纯文本、每行一个 publisher.name 格式 ID(如 ms-python.python),无 BOM、无版本号、不依赖网络,跨平台可直接重定向保存:
- Linux/macOS/PowerShell:
code --list-extensions > extensions.txt - Windows CMD:
code --list-extensions > extensions.txt(需先确认已执行Shell Command: Install 'code' command in PATH) - 生成的
extensions.txt可直接提交 Git、发邮件、存 U 盘,无需额外处理
--show-versions 要不要加?加了反而不能用
code --list-extensions --show-versions 会输出形如 ms-python.python@2024.12.1 的内容,看似完整,但 code --install-extension 完全不认带 @ 的字符串,会直接报错:Extension 'xxx@yyy' not found。
- 真需要版本控制,建议用基础 ID 导出 +
--force安装确保覆盖旧版 - 禁用插件不会出现在输出里——这是设计行为,不是 bug;如需记录禁用状态,得手动查
~/.vscode/extensions/下目录名,但重装时基本不需要 - 输出不含工作区级插件,只导出用户级已启用扩展,符合迁移预期
导入时批量安装必须逐行调用code --install-extension
VSCode 没有 --batch、-f 或类似参数,所谓“一键导入”本质都是脚本封装,底层仍是循环执行单个安装命令。
- Linux/macOS:
cat extensions.txt | xargs -L 1 code --install-extension --force - PowerShell:
Get-Content extensions.txt | ForEach-Object { code --install-extension $_ --force } - 网络不稳定时,单个插件可能卡死:Linux/macOS 可加
timeout 120;PowerShell 需自己加try/catch避免中断 -
--force很关键——跳过“已存在”提示,否则遇到同名插件会中断整个流程
同步插件≠环境就绪,路径和 Profile 结构最容易翻车
即使插件全装上了,settings.json 里含绝对路径(如 python.defaultInterpreterPath、files.exclude)会导致 Python 插件启动失败、文件资源管理器异常;VSCode 1.86+ 的 Profile 结构更让直接覆盖 settings.json 变成高危操作。
- 导入前必须清理或替换所有绝对路径字段,或改用相对路径 / 占位符(如
"${env:HOME}/.pyenv/versions/3.11/bin/python") - Profile 不是简单 JSON 对象:直接覆盖会删掉
profiles根字段,导致 Profile 识别失败;正确做法是进入目标机 Settings → Profiles → Reset Profile to Default,再把源机对应 Profile 内容(如"my-dev"下全部键值)粘贴进新settings.json的profiles字段内 - 改完
settings.json必须重启 VSCode ——Developer: Reload Window不触发 Profile 重解析
真正麻烦的从来不是“怎么传过去”,而是传过去之后哪些配置会悄悄失效:路径硬编码、Profile 嵌套结构、插件特有状态(比如 ESLint 的 workspace cache)、Remote-SSH 环境下的双层设置……这些都不会被 code --list-extensions 或 Settings Sync 覆盖,得靠人工核对和分层处理。











