code --list-extensions 是唯一可信导出命令,输出纯文本、每行一个 publisher.name 格式 ID(如 ms-python.python),不含禁用插件、不带版本号、无 BOM;扩展面板显示名非真实 ID,手动复制易错且无法区分启用状态,截图不可用于自动化安装。

code --list-extensions 是唯一能信的导出命令,输出纯文本、每行一个 publisher.name 格式 ID(如 ms-python.python),不含禁用插件、不带版本号、无 BOM、跨平台可直接重定向保存。
为什么不能用扩展面板复制或截图
扩展面板里显示的“Python”“Prettier”只是界面名,不是真实安装 ID;手动复制会漏掉含空格、括号或 Unicode 字符的 ID(比如某些中文定制插件);无法区分启用/禁用状态;且截图无法用于后续自动化安装。
- 常见错误现象:
code --list-extensions报command not found→ 本质是 VSCode 命令行工具没进 PATH - macOS/Linux:Cmd+Shift+P → 输入
Shell Command: Install 'code' command in PATH - Windows:同样操作,但若非默认路径安装,需手动确认
code是否在环境变量中
导出到文件的正确写法
终端执行以下任一命令,生成干净可传输的 extensions.txt:
- Linux/macOS/PowerShell:
code --list-extensions > extensions.txt - Windows CMD:
code --list-extensions > extensions.txt(注意当前目录有写入权限)
生成的文件是纯文本,无注释、无版本、无空行,适合 Git 提交、邮件发送或 U 盘拷贝。别加 --show-versions —— 输出形如 ms-python.python@2024.12.1 的字符串,code --install-extension 会直接报错 Extension 'xxx@yyy' not found。
禁用插件为什么不出现在列表里
这是设计行为,不是 bug。VSCode 只导出当前**已启用、用户级安装**的插件,符合迁移预期:你重装时本就不需要禁用项。工作区级插件也不会出现,避免误迁。
- 如真需记录禁用状态,得手动查
~/.vscode/extensions/下目录名,但重装后基本无意义 - 语言包(如
MS-CEINTL.vscode-language-pack-zh-hans)也必须显式出现在extensions.txt末尾,否则中文界面不会生效
导出看似简单,但关键点在于:必须用命令行、必须重定向、必须清理 PATH、必须避开 --show-versions 和图形界面——少做一步,迁移时就可能卡在某个插件上半天没反应。


















