如何在 IDEA/VS Code 中清晰显示 markdown 双空格 ` ` 换行?
IDEA 和 VS Code 都可以设置为只显示行尾空白,让行尾的双空格可见,同时隐藏单词之间的空格。
这类设置也会显示行尾的单个空格、Tab 等空白字符。要只标出行尾连续两个或更多普通空格,可以用正则查找;要确认这些空格是否构成 Markdown 硬换行,还需要结合 Markdown 语法判断。
为什么要区分行尾空格和换行标记?
按照 CommonMark 规则,在段落内部,行尾连续两个或更多普通空格后接换行,会产生硬换行,通常渲染为 <br />。三个行尾空格也可以产生硬换行。代码块中的行尾空格、块末尾的空格等不适用同样的规则,参见 CommonMark 硬换行规范。
下面用 · 代表普通空格:
第一行··
第二行
实际输入时应按两次空格键,不要输入 ·。
IDEA:只开启 Trailing
打开设置,进入:
Settings > Editor > General > Appearance
找到 Show whitespaces,按以下方式设置:
- 勾选
Show whitespaces。 - 勾选
Trailing。 - 取消勾选
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 或其他在线编辑器是否显示空白标记,取决于各自提供的功能。
备注:内容仅供参考。
