PAYATHON 2026

如何在 IDEA/VS Code 中清晰显示 markdown 双空格 ` ` 换行?

技术老齐

IDEA 和 VS Code 都可以设置为只显示行尾空白,让行尾的双空格可见,同时隐藏单词之间的空格。

这类设置也会显示行尾的单个空格、Tab 等空白字符。要只标出行尾连续两个或更多普通空格,可以用正则查找;要确认这些空格是否构成 Markdown 硬换行,还需要结合 Markdown 语法判断。

为什么要区分行尾空格和换行标记?

按照 CommonMark 规则,在段落内部,行尾连续两个或更多普通空格后接换行,会产生硬换行,通常渲染为 <br />。三个行尾空格也可以产生硬换行。代码块中的行尾空格、块末尾的空格等不适用同样的规则,参见 CommonMark 硬换行规范。

下面用 · 代表普通空格:

第一行··
第二行

实际输入时应按两次空格键,不要输入 ·。

IDEA:只开启 Trailing

打开设置,进入:

Settings > Editor > General > Appearance

找到 Show whitespaces,按以下方式设置:

  1. 勾选 Show whitespaces。
  2. 勾选 Trailing。
  3. 取消勾选 Leading、Inner;如果有 Selection,也取消勾选。

设置后,只显示行尾空白,行首缩进和行中空格保持隐藏。各选项的含义见 IDEA 官方文档。

如果空白标记颜色太淡,可以在以下位置调整空白字符的前景色,让它与编辑器背景更容易区分:

Settings > Editor > Color Scheme > General > Text > Whitespaces

JetBrains 的支持说明也建议检查空白字符颜色与背景色的差异。不同版本或界面语言下,设置名称可能略有不同。

VS Code:为 Markdown 设置 trailing

在命令面板中执行:

Preferences: Open User Settings (JSON)

将下面的配置合并到现有 settings.json 中:

{
  "[markdown]": {
    "editor.renderWhitespace": "trailing",
    "files.trimTrailingWhitespace": false
  }
}

这几项设置的作用是:

  • editor.renderWhitespace: "trailing" 只显示行尾空白。
  • [markdown] 将设置限定在 Markdown 文件。
  • files.trimTrailingWhitespace: false 防止 VS Code 在保存 Markdown 文件时自动清理行尾空白。

trailing 的含义见 VS Code 设置定义。语言专用设置和保留 Markdown 行尾空白的用法,分别见设置文档和 Markdown 文档。

如果标记仍不够醒目,可以在 settings.json 顶层加入:

"workbench.colorCustomizations": {
  "editorWhitespace.foreground": "#E09030"
}

颜色可以按主题调整。这项设置也会影响其他语言文件中的空白标记,不能放进 [markdown] 中。颜色键的定义见 VS Code 主题颜色文档。

只查找连续两个以上的行尾空格

要排除行尾的单个空格,可以在编辑器的文件内查找框中开启正则表达式模式,输入:

[ ]{2,}$

它会匹配行尾连续两个或更多普通空格,不匹配单个空格或 Tab。[ ] 中间是一个普通空格,不要改成 \s,因为 \s 还可能匹配制表符、换行符等字符。

IDEA 和 VS Code 的查找功能都支持正则表达式,具体用法可参考 IDEA 正则查找文档和 VS Code 编辑文档。

正则查找适合临时检查,查找结果的高亮与长期启用的空白标记不同。这个表达式仍会匹配代码块、纯空白行中的空格。要长期只标出符合 Markdown 语法的硬换行,需要能识别 Markdown 语法的插件或扩展;上述内置空白显示选项无法这样筛选。

保存后再确认一次

开启显示后,建议保存文件,再检查双空格是否还在。格式化器、保存时执行的操作或扩展也可能修改行尾空白,VS Code 的 files.trimTrailingWhitespace 只控制对应的内置清理行为。

如果可以调整写法,也可以使用 CommonMark 支持的行尾反斜杠来表示硬换行,在源文件中更容易看清:

第一行\
第二行

这种写法的适用条件也见 CommonMark 规范,使用前应确认目标平台支持。IDEA 和 VS Code 的设置只影响本地编辑器;Stack Overflow 或其他在线编辑器是否显示空白标记,取决于各自提供的功能。

备注:内容仅供参考。