VSCode“自动清理代码冗余”无万能方案,需组合使用:CodeMaid专精C#成员排序与using清理,Prettier负责JS/TS/HTML/CSS格式化与空行压缩,editor.trimTrailingWhitespace原生清除行尾空格,正则替换(如^\s$(\r\n|\n|\r)\s*$(\r\n|\n|\r)\s$→$1)精准删连续空行。

VSCode 里所谓“自动清理代码冗余”,根本不存在一个万能插件或开关。它本质是多个工具在不同场景下各司其职:CodeMaid 处理 C# 成员排序和 using 清理,Prettier 负责 JS/TS/HTML/CSS 的格式与空行压缩,editor.trimTrailingWhitespace 原生干掉行尾空格,而正则替换才是你真正掌控“删什么、留什么”的最后一道防线。
CodeMaid 不是通用格式化器,只对 C# 等少数语言生效
它默认只在 C#、C++、VB 等语言中激活核心功能(如移除未引用的 using、成员排序)。如果你在 TypeScript 文件里启用 CodeMaid: Run On Save,它大概率什么也不做——因为没注册对应语言服务。更关键的是,它和 Prettier 在同一文件上同时启用时会互相覆盖格式结果,尤其在缩进、括号换行等细节上冲突明显。
- 只在
settings.json中为特定语言开启:"codemaid.language.csharp.enable": true - 禁用全局
CodeMaid: Run On Save,改用语言级触发(如"codemaid.language.csharp.runOnSave": true) - 确认
editor.formatOnSave已关闭,避免和 Prettier 抢控制权
Prettier requireConfig 开启后,不配 .prettierrc 就等于没装
很多人装完 esbenp.prettier-vscode 发现格式化没反应,第一反应是插件坏了。其实八成是 prettier.requireConfig 设为 true 后,插件直接跳过所有没配置文件的项目。它不会报错,也不会提示,就安静地不干活。
- 必须在项目根目录放
.prettierrc.json5(支持注释,比 JSON 更安全) - 本地安装
prettier包:执行npm install prettier --save-dev --save-exact,否则 CI 流水线和队友机器上行为不一致 - 工作区设置里只保留三行:
"prettier.requireConfig": true、"editor.formatOnSave": true、"editor.defaultFormatter": "esbenp.prettier-vscode"
删空行不是“删空行”,而是“删连续多个空行”
直接搜 ^\s*$ 全局替换为空,等于把函数之间、类定义前后的语义分隔全抹掉。真正该处理的是 ≥2 个连续空行。VSCode 正则替换面板(Ctrl+H)开 .* 模式后,用这个组合最稳:
查找:^\s*$(\r\n|\n|\r)\s*$(\r\n|\n|\r)\s*$ 替换:$1
- 匹配逻辑:捕获第一个换行符(
$1),确保跨平台兼容(\r\n或\n) - 别一次 Replace All —— 先点
Find All,看高亮是否真落在“两行以上空白”区域 - Python 文件要特别小心:PEP 8 要求函数间空两行,删成一行就违反规范
旧版本 VSCode 更新包不能靠“设置”清理,必须手动筛
VSCode 设置里压根没有「自动删除旧更新包」选项。update.mode 只管下载和安装时机,不管磁盘空间。那些散落在 %USERPROFILE%\AppData\Roaming\Code\updates(Windows)或 ~/.vscode/updates(macOS/Linux)里的哈希命名文件夹,每个都可能是几 MB 到几十 MB,积少成多就是数 GB 垃圾。
- 删之前务必运行
code --status,确认updateState是idle,否则可能删掉待激活的新版 - 只保留两个文件夹:当前运行版本(
code --status输出里的installationPath所在父目录) + 最新修改时间的那个 - PowerShell 一行清理(Windows):
Get-ChildItem "$env:USERPROFILE\AppData\Roaming\Code\updates\*" -Directory | Sort-Object LastWriteTime -Descending | Select-Object -Skip 1 | ForEach-Object { Remove-Item $_.FullName -Recurse -Force }
最易被忽略的一点:所有“自动清理”都依赖上下文判断。CodeMaid 不知道你哪行注释该留,Prettier 不理解你为什么在 JSX 里硬换行,正则更不会主动区分配置文件里的空行和代码里的空行。真正的控制权,永远在你按下 Ctrl+H 前那一次 Find All 的确认里。


















