code --list-extensions 不可替代,因其导出的是插件真实ID(如ms-python.python)而非市场展示名(如Python),直接用展示名安装会报错“not found”。

离线插件迁移必须用 code --list-extensions 导出 ID 列表,不能靠截图、复制市场显示名;自动校验代码风格必须靠 ESLint/Stylelint 等工具链+编辑器配置双生效,单装插件没用。
导出插件列表时为什么 code --list-extensions 不可替代
VSCode 扩展市场里看到的 “Python”“Prettier” 是展示名,真实安装用的是 ID(如 ms-python.python、esbenp.prettier-vscode)。直接运行 code --install-extension Python 会报错 Extension 'Python' not found in the marketplace。
- 必须在旧电脑终端执行:
code --list-extensions --show-versions > extensions.txt,生成带版本号的 ID 列表 - Windows 用户若用 CMD,请确认
code已加入 PATH;PowerShell 更稳,避免重定向写成>>导致文件追加混乱 - 文件务必保存为 UTF-8 编码,否则含中文插件名(如某些国产定制插件)会乱码
- 别信“复制
.vscode/extensions文件夹”这种捷径——不同平台、VSCode 主版本、CPU 架构下二进制模块不通用,实测常见Cannot find module './extension'报错
code --install-extension 离线安装卡住或静默失败的真实原因
默认行为是联网校验签名、检查更新,网络不通时会卡在等待状态;更隐蔽的问题是:含 native 二进制的插件(如 ms-vscode.cpptools、esbenp.prettier-vscode)要求目标机 Node.js 版本匹配 VSCode 内置版本,否则日志只显示 Installation completed,但插件根本不加载。
- 必须加
--force跳过“已存在”提示,避免重复安装冲突 - Linux/macOS 推荐加
timeout 120控制单个安装时长:while read ext; do timeout 120 code --install-extension "$ext" --force; done - Windows PowerShell 可用:
Get-Content extensions.txt | ForEach-Object { code --install-extension $_ --force },但需提前在 VSCode 设置中关闭extensions.autoCheckUpdates - 安装后务必重启 VSCode —— 某些插件(如语言服务器类)不重启不会激活
ESLint/Prettier/Stylelint 自动校验必须满足的三个硬条件
只装插件 ≠ 自动校验。VSCode 不自带规则引擎,必须本地有可执行工具 + 项目有配置文件 + 编辑器明确绑定行为,三者缺一不可。
- 项目根目录必须存在配置文件:
.eslintrc.json(ESLint)、.stylelintrc.json(Stylelint)、.prettierrc(Prettier),否则插件无规则可依 -
editor.defaultFormatter和editor.codeActionsOnSave必须显式配置,例如:"source.fixAll.eslint": true,否则保存时只格式化不修复 - JavaScript/TypeScript 场景下,
esbenp.prettier-vscode插件需配合eslint-plugin-prettier才能统一规则优先级,否则 Prettier 和 ESLint 规则打架 - 注意路径匹配:.editorconfig 中
[*.jsx]段落必须显式声明,否则 JSX 文件不走缩进检测
快捷键和插件配置不能混为一谈
Settings Sync 或 code --list-extensions 都不处理快捷键。快捷键唯一可靠来源是 keybindings.json 文件,它和插件安装机制完全独立。
-
keybindings.json路径(Windows):%APPDATA%\Code\User\keybindings.json;macOS:~/Library/Application Support/Code/User/keybindings.json - 该文件复制过去即生效,VSCode 支持热重载,无需重启
- 但注意:如果快捷键绑定到某个未安装插件的命令(如
extension.prettier.onSave),该快捷键会静默失效,不会报错 - Settings Sync 的 “Keybindings” 项只是同步这个 JSON 文件内容,不是魔法同步行为本身
最易被忽略的一点:所有自动校验类插件(ESLint/Stylelint)都依赖当前打开的文件是否落在项目根目录下。如果只是单独打开一个 .js 文件,没进入含 .eslintrc.json 的文件夹,校验就根本不会触发——这不是 bug,是设计使然。


















