唯一可靠、无需插件的导出方式是code --list-extensions,它输出纯文本启用插件id列表(如ms-python.python),适配所有平台和vscode 1.80+版本;不能用扩展面板手动复制,因会误取中文显示名、丢失特殊字符id、无法区分启用/禁用状态。

唯一可靠、无需插件的导出方式是 code --list-extensions,它输出纯文本 ID 列表(如 ms-python.python),适配所有平台和 VSCode 1.80+ 版本。
为什么不能用扩展面板手动复制?
扩展面板(Ctrl+Shift+X)里点 @installed 查看后手动复制,看似直观,实则极易出错:
- 复制的是中文显示名(如“Python”),但
code --install-extension只认publisher.name格式的 ID,传Python会报错Extension 'Python' not found in the marketplace - 带空格或特殊字符的 ID(如
shd101wyy.markdown-preview-enhanced)在粘贴时容易被截断或换行丢失 - 无法区分启用/禁用状态——面板里显示“已安装”,但
code --list-extensions默认只列启用项,这才是你真正需要恢复的集合
code --list-extensions 报 command not found 怎么办?
这是最常见卡点,本质是 VSCode 的 CLI 工具没进系统 PATH。不是重装 VSCode 能解决的:
- macOS/Linux:在 VSCode 中按
Cmd+Shift+P→ 输入Shell Command: Install 'code' command in PATH→ 回车执行 - Windows:同样用
Ctrl+Shift+P触发该命令;若仍失败,检查是否用了非默认安装路径(如装在 D:\VSCode),需手动把D:\VSCode\bin加进系统环境变量PATH - 验证是否成功:终端新开一个窗口,直接运行
code --version,有输出即 OK
导出文件后怎么批量安装?
code --install-extension 不支持一次传多个参数,所谓“批量”只能靠 shell 或 PowerShell 逐行调用:
- Linux/macOS 终端:
cat extensions.txt | xargs -L 1 code --install-extension - Windows PowerShell:
Get-Content extensions.txt | ForEach-Object { code --install-extension $_ } - 加
--force避免某个插件已存在时中断流程:code --install-extension $_ --force - 网络不稳定时,建议加超时控制(如 Linux 上用
timeout 120 code --install-extension "$ext" --force),否则可能卡死在某个失败插件上不动
--show-versions 看起来很全,但别乱用
code --list-extensions --show-versions 会输出形如 ms-python.python@2024.12.1 的带版本行,但它和安装命令不兼容:
-
code --install-extension ms-python.python@2024.12.1会直接报错:Extension 'ms-python.python@2024.12.1' not found - VSCode 官方安装器不解析
@后版本号,只认 ID 主体 - 真要锁定版本,得自己写脚本做字符串切分,或改用
vsce工具离线打包——对绝大多数人来说,用--force覆盖安装更简单稳妥
真正容易被忽略的点是:导出的 extensions.txt 必须是 UTF-8 编码且无 BOM;某些插件 ID 含 Unicode 字符(比如国内团队发布的插件),用记事本另存时选错编码会导致后续安装失败,且错误提示不明确。直接用终端重定向生成(>)最保险。











