离线安装vscode插件需过三关:版本兼容(校验package.json中engines.vscode与本地code --version匹配)、依赖补全(如prettier需.prettierrc.json5及本地prettier cli)、lsp就位(如pyright须离线部署完整扩展目录而非仅.vsix)。

离线环境里装插件不是“下个包拖进去”就完事,而是要过三关:版本兼容、依赖补全、LSP就位。自动清理注释和空行也根本不能靠一个插件通吃,必须分语言、分阶段、手动兜底。
vsix 文件版本不匹配直接报错 Extension is not compatible
VSCode 安装时会严格比对 .vsix 包内 package.json 的 "engines": {"vscode": "^1.85.0"} 和你本地 code --version 输出的主版本号(如 1.90.2 → 取 1.90)。不匹配就静默失败或报这个错,不提示具体该用哪版。
- 查自己版本:Help → About → 看 Version 后面的数字,比如
1.89.0,那就要找engines.vscode支持^1.89.0或更宽泛范围的 vsix - 别信网页上显示的“最新版”,点进插件页右侧的 Version History,选和你 VSCode 主版本最接近的旧版(比如你用 1.87,就别硬上 1.90 要求的版本)
- 下载后先校验:
unzip -t your-extension.vsix,报错说明文件损坏;再unzip -p your-extension.vsix package.json | grep engines直接看版本字段
Prettier requireConfig=true 却没配 .prettierrc 就等于没装
很多人在离线环境装了 esbenp.prettier-vscode,打开 JS 文件按 Shift+Alt+F 没反应,以为插件坏了。其实是因为 prettier.requireConfig 默认是 true,它只认项目根目录下的 .prettierrc.json5(支持注释,比 JSON 更安全),没这个文件就彻底不干活,也不报错。
- 必须提前在有网机器上生成一份最小配置:
{"semi": true, "singleQuote": true},存为.prettierrc.json5 - 本地安装 Prettier 命令行工具:
npm install prettier --save-dev --save-exact,否则离线时格式化会卡在 “Running Prettier…” - 工作区设置里只留三行:
"prettier.requireConfig": true、"editor.formatOnSave": true、"editor.defaultFormatter": "esbenp.prettier-vscode",其他 Prettier 相关配置全删
清理注释和空行不能只靠插件,正则才是最终控制权
CodeMaid 对 TypeScript/JS 文件基本无效,Prettier 默认不删注释,而所谓“删空行”如果用 ^\s*$ 全局替换,会把函数之间、模块之间的语义空行也抹掉——这不是清理,是破坏。
- 删连续空行(保留单空行作分隔):VSCode 替换面板开
.*模式,查找^\s*$(\r\n|\n|\r)\s*$(\r\n|\n|\r)\s*$,替换为$1 - 删单行注释(JS/TS):查找
//.*$,替换为空;但注意别误杀 URL 或字符串里的//,先Ctrl+F预览匹配项 - 删块注释(C-style):查找
/\*[\s\S]*?\*/(记得开.匹配换行),替换为空;*?是非贪婪匹配,避免跨多段注释误删中间代码
Python 补全/注释清理不生效?大概率是 pyright 没离线拉下来
装完 ms-python.python 插件后,右下角状态栏显示 “Downloading Pyright…” 卡住,或者按 Ctrl+Space 没类型提示,不是插件没装好,而是它的语言服务器(LSP)没离线部署成功。
- 必须在有网机器上完整走一遍流程:打开一个
.py文件 → 等状态栏变绿、输出面板显示 “Pyright initialized” → 再去~/.vscode/extensions/ms-python.python-*目录下,把整个文件夹拷到内网机对应路径 - 别只拷
.vsix,要拷解压后的完整目录,里面含node_modules/pyright和预编译二进制 - 确认
python.defaultInterpreterPath指向正确 Python 解释器,否则 pyright 启动失败,连带注释跳转、类型推导全失效
离线环境最易被忽略的不是“怎么装”,而是“装完之后谁来跑第一次”。很多插件的真正功能藏在首次激活时下载的 LSP、CLI 或模型里,没这一步,界面显示已安装,实际就是个空壳。











