VSCode没有统一的“文本自动清理”开关,需分别配置:files.trimTrailingWhitespace删行尾空格、editor.codeActionsOnSave组织import、editor.formatOnSave配合Prettier删空行、Code Runner或Ctrl+K清终端。

VSCode 没有叫“文本自动清理”的统一开关,所谓自动清理其实是多个独立配置项的组合效果:删行尾空格、删文件末尾多余换行、组织 import、清空行——每项都得单独配,且容易互相覆盖或静默失效。
files.trimTrailingWhitespace:只删行尾空格和制表符
这是唯一原生支持、零依赖的“清理”动作。它不碰结构、不调格式化器、不改逻辑,就扫一遍每行末尾,把 、\t、\r 全干掉。
- 必须设为
true,默认是false - 写进项目根目录的
.vscode/settings.json,否则团队拉代码后无效 - 会被语言级配置覆盖,比如
"[python]": {"files.trimTrailingWhitespace": false}就会让 .py 文件彻底失效 - 如果保存后没反应,先看右下角语言 ID 是否正确(如显示
plaintext而非javascript),再检查文件是否只读或被.editorconfig中的trim_trailing_whitespace = false拦截
editor.codeActionsOnSave + source.organizeImports:删未用 import
这个不是格式化,而是由 TypeScript / Pylance 等语言服务驱动的语义级操作。它能识别哪些 import 真的没被引用,然后安全删除。
- 配置必须是对象形式:
"editor.codeActionsOnSave": { "source.organizeImports": true },写成布尔值或数组都无效 - 在
.ts/.tsx中最稳;.js文件需靠 JSDoc 注解辅助判断;.vue需 Volar +typescript.suggest.autoImports开启 - 别和 ESLint 的
source.fixAll.eslint同时开——ESLint 可能先补 import,TypeScript 再删一遍,结果删掉import * as d3 from 'd3'这类命名空间导入 - 按
Ctrl+.弹不出 Organize imports?说明语言服务没起来:检查文件是否已保存、tsconfig.json是否存在、Pylance 是否启用 linting
editor.formatOnSave + Prettier:删多余空行和统一空白
VSCode 原生不支持删空行,files.trimTrailingWhitespace 对纯空行(只有 \n)完全没反应。真要压缩 \n\n\n → \n\n,只能靠格式化器。
- 装好
esbenp.prettier-vscode扩展,加"editor.formatOnSave": true - Prettier v3+ 默认压缩连续空行,但不会全删;如需更激进,加
"blankLineBeforeBody": true到.prettierrc - 别指望
files.trimFinalNewlines干这事——它只管文件末尾,比如把结尾的\n\n\n压成一个\n - 正则替换是临时补救:
^\s*$\n查找纯空行(含空格/制表符),替换为空,但务必先备份,Ctrl+Z验证再批量执行
tasks.json 或 Code Runner 清终端输出,不是清代码
很多人搜“自动清理”其实是想让运行代码后终端不堆历史。这不是代码文本清理,而是终端行为控制。
- Code Runner 插件里开
Code-runner: Clear Previous Output,每次Ctrl+Alt+N前清空整个终端面板(含滚动缓冲区) - 自定义任务必须在
presentation下写"clear": true,不能塞进command里拼clear && python main.py——后者只是视觉刷新,旧内容还在缓冲区里 -
Ctrl+K是 VSCode 原生真清屏快捷键,跨平台有效;clear或cls命令在终端里敲只是发 ANSI 序列,滚轮一拉全回来 - 别在 shell 配置文件里加
clear——VSCode 启动的是 non-login shell,根本不会读~/.bashrc
真正难的不是配哪一项,而是理解它们互不隶属:files.trimTrailingWhitespace 是纯文本擦除,source.organizeImports 依赖语言服务,editor.formatOnSave 调外部工具,clear 是终端控制。配错优先级或混用场景,就会出现“删了又加回来”“空格还在”“空行没少”这些看似玄学的问题。











