离线安装插件唯一可靠方式是code --install-extension配合完整路径的.vsix文件,不可用插件id;editor.trimtrailingwhitespace不删纯空行,需格式化工具或正则;code runner清理.exe仅限成功运行后且需手动配置命令并加引号防特殊字符。

离线安装插件和自动清理代码冗余是两个独立问题,不能靠同一个操作解决;前者依赖 .vsix 文件与 code --install-extension 命令,后者靠编辑器配置或扩展行为控制,混用会导致配置失效或清理失败。
如何用 code --install-extension 正确安装离线插件
这是唯一可靠、可复现的离线安装方式,不依赖图形界面,适合脚本化和批量部署。
-
code --install-extension必须指向完整路径,比如code --install-extension ./extensions/python-2024.12.0.vsix;相对路径容易因终端当前目录不同而失败 - 插件 ID(如
ms-python.python)不能代替.vsix文件——离线环境下code --install-extension ms-python.python会直接报错connect ECONNREFUSED - 安装后不会立即生效:需重启 VSCode 或执行命令面板中的
Developer: Reload Window - 若提示
Extension 'xxx' is not compatible with Code 'x.x.x',说明插件package.json中的engines.vscode版本范围不匹配,需换低版本.vsix
为什么 editor.trimTrailingWhitespace 不删空行
它只处理「行尾空白字符」(空格、制表符),对纯空行(\n\n)完全无感——名字已写死行为边界,不是 bug,是设计。
- 开启该设置后,
hello \nint main() {\n return 0;\n}\n会变成hello\nint main() {\n return 0;\n}\n,但中间那个空行还在 - 真正删空行要靠格式化工具:Prettier 的
blankLineBeforeBody、ESLint 的no-multiple-empty-lines,或手动触发editor.action.formatDocument - 正则替换
^\s*$\n(注意末尾换行)可删纯空行,但会破坏 Git diff 的上下文行号,慎用于协作项目
Code Runner 自动清理 .exe 的真实限制
它只能在运行「成功后」删除上一次生成的同名文件,无法预测编译失败时是否残留垃圾,也不能跨文件管理输出目标。
- 启用方式是设置
code-runner.clearPreviousOutput为true,并确保code-runner.executorMap中 C/C++ 条目末尾加了&& del "$fileNameWithoutExt.exe"(Windows)或&& rm -f "$fileNameWithoutExt"(macOS/Linux) - 它不清理
.o、.obj或.out等中间文件——这些得靠构建系统(如 Makefile)或自定义 task - 若源文件名含空格或特殊字符(如
my test.c),默认变量$fileNameWithoutExt会截断,必须改用"$fileNameWithoutExt"加引号包裹 - 多个 C 文件共存时,它只清当前活动文件对应的输出,不会误删其他
.exe——这点很安全,但也不够“全局”
真正难的是协调:离线插件装好了,但 Code Runner 的清理逻辑依赖你手写的 shell 命令;trim 设置打开了,可空行还得另配格式化器。每个开关都管一段,没哪个能“一键全包”。留心那些没被文档强调的边界,比如变量未引号、路径相对性、Git diff 友好性——它们才是线上出问题时最常卡住你的地方。











