直接点击 Diff 视图右上角 ≡ 图标并勾选 Ignore Whitespace 即可关闭当前标签页的空格差异高亮;全局禁用需在 settings.json 中设置 "diffEditor.ignoreTrimWhitespace": true,该配置对所有 VSCode 渲染的 diff(包括 Git 面板)生效,但不处理换行符、全角空格等非标准空白字符。

VSCode 的 Diff 视图默认会把空格、制表符、行尾换行符的差异都标为变更,这在比对代码逻辑改动时反而干扰判断——直接关闭空格差异高亮是最有效解法,无需插件或命令行参数。
Diff 视图右上角的「忽略空格」开关在哪
打开两个文件(或使用 git diff 命令触发 Diff)后,右上角会出现三个图标:⋯、↗、≡。点击最右侧的 ≡(“更多操作”),弹出菜单中勾选 Ignore Whitespace 即可。该设置仅对当前 Diff 标签页生效,刷新或重开 Diff 会恢复默认。
settings.json 中全局禁用空格差异
如果日常几乎不关心空格变化,可在用户设置中永久关闭:
{
"diffEditor.ignoreTrimWhitespace": true
}
注意这个配置只影响 diffEditor,不影响编辑器本身的缩进显示或保存时的 trim 行尾空格行为。若同时启用了 files.trimTrailingWhitespace,Git 提交前仍会自动清理,但 Diff 不再因此标红。
为什么 git diff --ignore-space-change 在 VSCode 里不生效
VSCode 内置的 Git Diff 不走 shell 命令管道,而是调用 Git 的 raw patch 接口,所以终端里有效的 --ignore-space-change 参数对它无效。想让 VSCode 的 Git 资源管理器(Source Control 视图)也忽略空格,必须靠上面提到的 diffEditor.ignoreTrimWhitespace 设置——它会作用于所有通过 VSCode 渲染的 diff,包括 Git 面板里的文件对比。
某些空格差异还是被标出?检查换行符和不可见字符
即使开启了忽略空格,以下情况仍会触发差异标记:
-
CRLF与LF混用(Windows vs macOS/Linux):需统一files.eol或启用files.autoGuessEncoding - 全角空格、零宽空格(
\u200b)、不间断空格(\u00a0):VSCode 默认不将其视作“whitespace”,diffEditor.ignoreTrimWhitespace对它们无效 - 缩进混用(空格 vs Tab):只要数量不同,仍算内容变更,不是“空白差异”
这类问题得靠 editor.renderWhitespace: "all" 显式显示空白字符,再手动清理——Diff 工具只负责“比较”,不负责“归一化”。


















