vscode插件同步需命令行导出导入:用code --list-extensions > extensions.txt导出publisher.name格式id,再逐个code --install-extension安装;settings sync默认不同步插件,须手动开启扩展同步并上传。

直接导出插件列表用 code --list-extensions,同步插件到新电脑不能只靠 Settings Sync —— 它默认不传插件,必须手动开开关、手动上传,否则新机器上一个扩展都不会装。
导出插件列表必须用命令行,不是复制扩展面板里的名字
VSCode 扩展面板(Ctrl+Shift+X)里看到的“Python”“Prettier”是显示名,不是安装 ID。用它去装会报错:Extension 'Python' not found in the marketplace。唯一可靠方式是运行终端命令:
-
code --list-extensions > extensions.txt→ 生成纯文本,每行一个publisher.name格式 ID(如ms-python.python) - Windows 用户若提示
command not found,先在 VSCode 里按 Ctrl+Shift+P,运行Shell Command: Install 'code' command in PATH - 别加
--show-versions:输出形如ms-python.python@2024.6.0的格式,但code --install-extension不认带@的字符串,会直接失败 - 文件保存为 UTF-8 编码,避免中文插件名(如某些国内定制版)乱码
Settings Sync 默认不同步插件,开了也不等于自动生效
即使你登录了 GitHub 账号并启用了 Settings Sync,extensions.json 默认压根不会写入 Gist。新设备执行 Sync: Download 后只会恢复设置,插件列表仍是空的。
- 必须手动打开高级选项:
Sync: Advanced Options→Toggle Extension Sync(状态变为 enabled) - 之后再运行
Sync: Upload,Gist 里才会有"extensions": [...]字段 - 左下角显示
Synced≠ 插件已装好:VSCode 会在后台静默安装,不弹窗、不报错、不提示进度;失败时日志里只有Installing extension failed或Extension sync disabled - Ubuntu/WSL 下卡在
Getting extensions list?大概率是系统代理没透传给 VSCode,需提前设好https_proxy环境变量
批量安装插件必须逐个调用 code --install-extension
VSCode 没有 --batch 或 -f extensions.txt 这类参数。所谓“一键导入”只是脚本封装,本质仍是循环调用。
- Linux/macOS:
cat extensions.txt | xargs -L 1 code --install-extension --force(--force跳过“已存在”中断) - PowerShell:
Get-Content extensions.txt | ForEach-Object { code --install-extension $_ --force } - 网络不稳定时,单个插件可能卡死:Linux/macOS 可加
timeout 120限制时长;PowerShell 需自己加try/catch避免中断 - 某些插件(如
ms-vscode.cpptools)依赖本地签名校验,离线或代理异常时会无限等待,--force不能跳过这个环节,得先确保网络通或关掉扩展自动更新
路径类配置跨平台直接同步 = 自动失效
像 python.defaultInterpreterPath、files.exclude 这类含绝对路径的字段,Settings Sync 会原样搬过去。Windows 上的 C:\Python39\python.exe 同步到 macOS,Python 插件就直接罢工。
- 方案一:在
settings.json中对该字段加注释// @sync false,Settings Sync 会跳过它 - 方案二:把路径配置移到项目级
.vscode/settings.json—— Settings Sync 本来就不同步工作区配置 - 方案三:干脆留空
python.defaultInterpreterPath,每次打开项目时手动选解释器,反而更稳 - 注意:
sync.ignore是 Settings Sync 插件自己的配置项,要写在全局settings.json里才生效,不是 VSCode 原生命令
真正麻烦的从来不是“怎么传过去”,而是“传过去之后哪些东西会悄悄失效”——路径、代理、本地存、插件依赖的 runtime 版本,这些都得人工对齐。自动化脚本能省时间,但不能替代验证。











