vscode 保存时自动删除末尾空行需开启内置设置 files.trimtrailingwhitespace:在设置中搜索并勾选“files: trim trailing whitespace”,或在 settings.json 中添加 "files.trimtrailingwhitespace": true;注意语言模式识别错误、局部配置覆盖及格式化工具(如 prettier)可能干扰该功能。

VSCode 保存时自动删末尾空行,靠内置设置就能搞定,不需要插件。
怎么开启“保存时修剪末尾空行”
这是 VSCode 原生支持的功能,对应配置项是 files.trimTrailingWhitespace。它默认关闭,打开后每次保存都会自动删掉每行末尾的空格和制表符——包括文件最后一行的空白行(只要该行只含空白字符)。
- 打开设置(
Ctrl+,或Cmd+,),搜trimTrailingWhitespace - 勾选
Files: Trim Trailing Whitespace - 或者直接在
settings.json里加一行:"files.trimTrailingWhitespace": true
为什么有时候末尾空行没被删掉?
常见原因是当前文件的 language mode 被识别错了,或设置了局部覆盖规则。VSCode 的 trimming 行为受语言特定设置影响,比如某些语言(如 makefile)默认禁用该功能。
- 检查右下角状态栏显示的语言名,点击可切换;确认是预期语言(如
javascript、python) - 在
settings.json中检查是否有类似"[makefile]": {"files.trimTrailingWhitespace": false}的覆盖项 - 如果用 Prettier 等格式化工具,它可能在保存时接管流程,导致 VSCode 原生 trimming 不生效——此时要关掉 Prettier 的
trimTrailingWhitespace配置,或确保它与 VSCode 设置一致
和 files.insertFinalNewline 的关系
这两个设置经常一起出现,但作用完全独立:files.trimTrailingWhitespace 删末尾空白,files.insertFinalNewline 是在文件结尾强制加一个换行符(即 Unix 风格的 EOF 换行)。它们不冲突,可以同时开。
- 想让文件以换行结尾且无多余空行?两个都设为
true - 开了
insertFinalNewline但没开trimTrailingWhitespace,可能产生“换行+空行”的组合(即最后两行都是空的) - Git 提交时对换行敏感,建议统一启用
insertFinalNewline,避免团队成员提交不同 EOF 状态的文件
真正容易被忽略的是:这个 trimming 只发生在“保存”动作,不会在编辑过程中实时清理;而且它只处理纯空白行,如果末尾行有注释或空格后跟其他字符,就不会动——这其实是设计使然,不是 bug。











