Markdown 是一种轻量级标记语言,广泛用于撰写带有格式的纯文本文档。它允许人们使用易读易写的纯文本格式来创建文档,然后将其转换为结构化的格式,如 HTML。在 Markdown 的众多语法特性中,删除线是一个非常实用且常见的标记,用于表示文本已被删除、不再有效或不再相关。本文将围绕 Markdown 删除线这一特性,详细解答关于它的各种实际问题,帮助您更好地理解和运用它。

是什么:Markdown 删除线基础

Markdown 删除线是什么?

Markdown 删除线是一种文本格式化语法,其作用是在文本内容的中间绘制一条水平线,使得被标记的文字看起来像是被“划掉”了一样。它允许作者在不实际移除文字内容的情况下,向读者传达这些文字的状态信息(如错误、过时、已修改等)。

它看起来像什么?

在 Markdown 源文件中,删除线是通过特定的符号标记的。而在 Markdown 解析器处理后,在最终渲染的文档中(如网页、预览窗口等),被标记的文本就会显示出一条贯穿其中的线条。

在 Markdown 源文件中:

~~这是一段被删除的文字~~

在渲染后的输出中:

这是一段被删除的文字

它的作用是什么?

Markdown 删除线的主要作用是标记文本的状态。它不是用来永久移除文本的,而是用来:

  • 表示文本是错误的、需要修正的。
  • 表示文本是过时的、不再适用的。
  • 在修订或协作过程中,显示被移除的内容,以便跟踪变化。
  • 在头脑风暴时,划掉不再考虑的想法,但仍然保留记录。
  • 强调某些内容已经被“驳回”或“作废”。

与直接删除文字相比,使用删除线保留了原始内容,这在很多场景下非常重要,提供了透明度和历史记录。

为什么使用:不仅仅是删除

为什么要使用删除线而不是直接删除文本?

使用删除线而非直接删除文本,其核心价值在于保留信息和沟通意图

  • 保留上下文和历史: 直接删除文字会丢失信息。使用删除线可以让读者看到原文是什么,以及哪些部分被标记为不再有效,这对于理解修订过程、查看错误原文或保留记录至关重要。
  • 清晰地表达修改: 在多人协作或文档版本管理中,删除线是表示“删除”操作的标准化方式。它清晰地告诉审阅者或未来的读者,“这部分内容曾经在这里,现在被标记为无效了”。
  • 区分状态而非彻底消失: 有时候你需要表明一个想法或一个数据点是错误的,但并不想让它完全消失,因为它的存在本身可能就是需要被记住或讨论的背景。删除线完美地 fulfills 这个需求。

在哪些场景下使用删除线比较合适?

删除线在许多 Markdown 应用场景中都非常有用:

  • 文档修订和校对: 在技术文档、会议纪要或报告中标记错误信息或被替换的内容。例如:“原计划是召开 ~~线上~~ 线下会议。”
  • 在线论坛和社区: 在帖子或评论中修正自己的错误或更新信息,同时保留原帖的完整性。例如:“更新:我刚才说的价格是错的,~~应该是 100 元~~ 实际是 120 元。”
  • 任务列表和计划: 在列表中划掉已作废或不再执行的任务。例如:“- 完成报告草稿 – ~~联系供应商确认细节~~(计划有变)”
  • 笔记和知识库: 在个人笔记中标记过时或被证明不正确的知识点,以便回顾和学习。
  • 代码托管平台(如 GitHub、GitLab)的评论和 Pull Request 描述: 在讨论中修改自己的观点或信息,清晰地展示修改痕迹。

在哪里使用:广泛的支持

哪些 Markdown 编辑器或平台支持删除线?

删除线语法(通常是使用 `~~`)并不是原始 Markdown 规范的一部分,它是一个非常流行的扩展,尤其常见于被称为 GitHub Flavored Markdown (GFM) 的变体中。因此,绝大多数现代的 Markdown 编辑器和平台都支持删除线。这包括但不限于:

  • GitHub、GitLab、Bitbucket 等代码托管平台的文本区域(Issue、Pull Request、Wiki、评论等)。
  • Stack Overflow、Reddit 等社区论坛。
  • Typora、Obsidian、VS Code (配合 Markdown 预览插件)、Haroopad 等桌面 Markdown 编辑器。
  • 许多在线 Markdown 编辑器。
  • Notion、Coda、Joplin 等支持 Markdown 格式的笔记或协作工具。
  • Jekyll、Hugo 等静态网站生成器(取决于使用的 Markdown 处理器)。

总的来说,如果您使用的 Markdown 工具是近几年开发的或持续更新的,它很大概率是支持删除线语法的。

常见的应用平台或环境?

删除线最常出现在以下几种环境中:

  • 协作和代码审查: 在软件开发团队中,成员在 Issue 或 Pull Request 的评论中标记需要修改或已废弃的建议。
  • 在线讨论和评论: 在各种论坛、博客评论区或社交媒体上更正信息或表达异议。
  • 文档撰写和维护: 在 README 文件、项目文档、API 文档中标记过时的功能说明或注意事项。
  • 内容创作: 在博客文章或技术文章中用于某些强调效果,尽管这不如其修订功能常用。

如何使用:掌握语法

Markdown 删除线的具体语法是什么?

Markdown 删除线的标准(虽然是扩展)语法是使用两个波浪号(`~~`)将需要删除的文本包裹起来。

语法结构:~~要删除的文本~~

如何给一段文字添加删除线?

要给一段完整的文字添加删除线,只需将这段文字的两侧都放上两个波浪号。

示例:

~~这段文字包含了几个句子,它们都需要被标记为已删除或无效状态。这是删除内容的一部分。~~

渲染后效果:这段文字包含了几个句子,它们都需要被标记为已删除或无效状态。这是删除内容的一部分。

如何给一句话中的部分词语添加删除线?

删除线语法可以应用于句子中的任何部分,只需精确地将需要删除的词语或短语包裹起来。

示例:

我们决定 ~~推迟~~ 提前会议时间。

渲染后效果:我们决定 推迟 提前会议时间。

删除线可以跨越多行吗?

在许多现代 Markdown 解析器(特别是支持 GFM 的)中,删除线语法是可以跨越多行的,只要开头的 `~~` 和结尾的 `~~` 能够匹配,它们之间的所有内容(包括换行符)通常都会被视为需要删除的部分。

示例:

~~
这是第一行需要删除的文字。
这是第二行,也是删除的一部分。
即使换行了,只要在删除符号内部,都将被处理。
~~

渲染后效果(可能在一整个块上显示删除线):


这是第一行需要删除的文字。
这是第二行,也是删除的一部分。
即使换行了,只要在删除符号内部,都将被处理。

请注意,具体的渲染方式(是每一行都有删除线,还是整个块一个删除线)取决于 CSS 样式和解析器的 HTML 输出。但从 Markdown 语法角度,这样写通常会将整个块标记为删除。

删除线可以嵌套其他 Markdown 语法吗?

是的,通常可以将其他 Markdown 语法(如加粗斜体、`代码`等)嵌套在删除线内部。这意味着被删除的文本仍然可以保留其原本的格式。

嵌套示例(加粗):

~~请注意,这里的 **重要** 信息已过期。~~

渲染后效果:请注意,这里的 重要 信息已过期。

嵌套示例(代码):

~~旧命令是使用 `git push origin master`。~~

渲染后效果:旧命令是使用 git push origin master

其他 Markdown 语法可以包含删除线吗?

同样可以。删除线语法可以出现在列表项、引用块、表格(如果支持)等其他 Markdown 结构内部。

在列表中的示例:

  • 购买牛奶
  • ~~购买面包~~ (已购买)
  • ~~联系客服~~ (问题已解决)

在引用块中的示例:

~~这是一条需要删除的引用。~~

渲染后效果:

这是一条需要删除的引用。

细节与注意事项

需要几个波浪号?

标准的删除线语法需要两个波浪号(`~~`)作为开始和结束标记。使用一个波浪号(`~`)通常不会被解析为删除线(有时可能被解析为斜体,取决于解析器和上下文,但在 Markdown 中很少见且不标准),使用三个或更多波浪号则更不常见,其解析行为可能不可预测或不被支持。始终使用两个波浪号是最可靠的方法。

删除线符号和文本之间需要有空格吗?

为了确保可靠的解析,推荐的做法是不要在开头的 `~~` 之后或结尾的 `~~` 之前添加空格。例如,写 `~~ text~~` 或 `~~text ~~` 可能会导致某些解析器无法识别删除线语法。正确的格式是 `~~text~~`,波浪号紧贴着要删除的文本的开始和结束。

不推荐的格式:

~~ 需要删除的文字~~
~~需要删除的文字 ~~
~只需要一个波浪号?~

推荐的格式:

~~需要删除的文字~~

Markdown 解析器如何处理删除线语法?

当 Markdown 解析器遇到 `~~` 包裹的文本时,它会识别这是一个删除线标记。在将 Markdown 转换为 HTML 时,解析器通常会将这部分文本以及包裹它的 `~~` 符号替换为 HTML 的 `` 标签或 `` 标签。

例如,Markdown 文本:`~~这段文字被划掉了~~`

可能会被解析器转换为 HTML:`这段文字被划掉了` 或者 `这段文字被划掉了`

从视觉效果上看,`` 和 `` 标签通常都会通过浏览器默认的 CSS 样式显示为带有删除线的文本。在语义上,`` 标签更侧重于表示“删除的内容”,而 `` 标签更侧重于表示“不再准确或不再相关的内容”,但对于大多数使用 Markdown 删除线的场景来说,两者在视觉上没有区别,可以互换使用,具体使用哪个标签取决于解析器的实现。

注意: 确保您使用的 Markdown 编辑器或平台支持删除线语法。虽然它非常普遍,但在一些非常老旧或非常基础的 Markdown 实现中可能不支持。

总结

Markdown 删除线(使用 `~~文本~~` 语法)是一个简单但功能强大的格式化选项。它不仅仅是物理上移除文字,更是一种表达文本状态(错误、过时、已修订等)的有效沟通方式,同时保留了原始信息。由于其广泛的支持,您可以在绝大多数现代 Markdown 编辑器和平台中轻松使用它来提高文档的清晰度、透明度和协作效率。掌握这一语法,将使您的 Markdown 写作更加灵活和专业。

markdown删除线