直接复制整个extensions文件夹最可靠,但需满足VSCode版本一致、插件已完整初始化、本机彻底退出VSCode进程三条件;单拖.vsix仅注册前端,语言服务器等依赖需首次启用时联网下载,离线会卡在“Downloading…”。

直接复制整个 extensions 文件夹是最省事、最可靠的方式,但必须满足三个硬条件:VSCode 版本一致、插件已完整初始化、本机彻底退出 VSCode 进程。
为什么不能只拖一个 .vsix 文件?
很多插件(比如 ms-python.python、volarjs.volar)安装 .vsix 只是注册前端界面,真正的语言服务器(如 pyright、volar-server)是在首次启用时联网下载的。离线环境里,你点启用只会卡在 “Downloading…”。所以单拖 .vsix 往往装上了却没功能。
- 拖 .vsix 适合纯前端插件(如
esbenp.prettier-vscode),不依赖 native 二进制或远程服务 - 含 LSP、CLI 或预编译二进制的插件,必须连同其已解压后的完整目录一起迁移
- 验证方式:打开一个对应文件(如
.py),看状态栏是否显示 “Ready”,而不是 “Starting…” 或空白
复制 extensions 目录前必须确认的三件事
直接拷贝 ~/.vscode/extensions/xxx-yyy.zzz/ 是可行的,但错一步就白忙:
- 检查源机器 VSCode 版本:
code --version,再运行code --about确认架构(x64/arm64/darwin-arm64)——ARM Mac 装 x64 版本不会报错,但 LSP 直接不加载 - 确认目标机器 VSCode 版本 ≥ 源插件
package.json中"engines": {"vscode": "^1.85.0"}声明的最低版本;用unzip -p plugin.vsix package.json | grep engines提前查 - 源机器必须已完整触发过该插件:打开过对应类型文件、等状态栏变 “Ready”、且没报错;否则目录里缺
node_modules或out下的二进制
复制后本机怎么让它真正生效?
很多人复制完一重启 VSCode 就以为成了,结果扩展面板里有名字,点开却提示 “This extension is disabled”,或者根本没反应。
- 必须完全退出 VSCode:Windows 任务管理器杀掉所有
Code.exe,macOS 活动监视器结束Code Helper和Code,Linuxpkill -f code - 路径要对:Windows 是
%USERPROFILE%\.vscode\extensions\,macOS/Linux 是$HOME/.vscode/extensions/;别漏掉末尾斜杠,也别把文件夹塞进子目录 - 文件夹名不能改:必须是
ms-python.python-2026.6.123456/这种格式,不能简化成python/,否则 VSCode 启动时跳过加载 - 首次启动后,进扩展面板点「启用」——很多插件默认禁用,尤其是语言类插件
如果只有 .vsix 文件,又没网,还能抢救吗?
能,但得手动补全依赖链,属于“应急操作”,不是常规流程:
- 先用
unzip plugin.vsix -d /tmp/ext解压,确认顶层有extension/目录 - 检查
/tmp/ext/package.json的engines.vscode和displayName,确保和本机兼容 - 若插件声明了
lsif、lsp、server等关键词,说明它需要额外二进制;这时只能去 GitHub Release 页面找带darwin-arm64或win32-x64后缀的 assets,手动下好放进out/或server/子目录 - 重打包:回到
/tmp/ext上层,zip -r plugin-fixed.vsix extension/,再用code --install-extension plugin-fixed.vsix --allow-unverified
这招容易漏文件、签名失效、LSP 路径错位,只建议在实在找不到完整目录时临时顶一顶。


















