唯一可靠的方式是运行code --list-extensions,因其直接输出纯文本、用户级已启用插件的真实id(如ms-python.python),不依赖ui、不混淆显示名与id、不包含禁用或工作区插件,而图形界面复制仅得中文名,易拼错且无法用于安装。

唯一可靠的方式是运行 code --list-extensions,其他任何图形界面操作或手动复制都不可靠。
为什么不能从扩展面板里复制粘贴
扩展面板(Ctrl+Shift+X)里看到的是中文显示名(如“Python”、“GitLens”),但 code --install-extension 只认真实 ID(如 ms-python.python、eamodio.gitlens)。手动抄写极易拼错、漏空格、混淆大小写,且无法区分启用/禁用状态。更关键的是:面板不显示插件 ID,你根本不知道该复制什么。
- 常见错误现象:
code --install-extension Python报错Extension 'Python' not found - 禁用的插件不会出现在
code --list-extensions输出中——这是设计行为,不是 bug - 工作区级安装的插件也不会被列出,该命令只返回用户级已启用的扩展
导出命令必须加重定向,别只看终端输出
直接运行 code --list-extensions 只在终端打印,一滚动就丢。真正可备份、可传输、可脚本化的操作,必须保存为文件:
- Linux/macOS/PowerShell:
code --list-extensions > extensions.txt - Windows CMD:
code --list-extensions > extensions.txt(注意当前目录要有写权限) - 生成的
extensions.txt是纯文本,UTF-8 编码,无 BOM、无注释、无版本号,适合 Git 提交或跨平台共享
要不要加 --show-versions?谨慎选择
加 --show-versions 会输出形如 ms-python.python@2024.12.1 的行,看起来更完整,但实际安装时 code --install-extension 不接受带 @ 的参数,会报错 Extension 'xxx@yyy' not found。
- 除非你后续用 Python/awk/sed 自己解析版本号并做灰度控制,否则别加这个参数
- 真需要版本约束,推荐用
--force安装最新版(覆盖旧版),比硬锁版本更稳定 - 若调试兼容性问题,可临时加该参数导出到另一文件:
code --list-extensions --show-versions > extensions-with-ver.txt
如果 code 命令报 “command not found”
这不是插件问题,是 VSCode 命令行工具没注册进系统 PATH:
- macOS/Linux:在 VSCode 中按
Cmd+Shift+P,输入Shell Command: Install 'code' command in PATH,回车执行 - Windows:同上操作;若仍失败,检查是否用了非默认安装路径,或手动把 VSCode 安装目录下的
bin(或Code.exe所在目录)加入环境变量 - 验证是否成功:
code --version应能正常输出版本号
最易被忽略的一点:导出只是第一步,extensions.txt 本身不会自动安装插件——它只是一个 ID 列表,后续必须配合循环调用 code --install-extension 才能还原。别把它当成“安装包”。











