上一篇文章 中,我们已经了解了 Markdown 的基本语法和背后的逻辑,但都更多是在理论层面上去讨论。在下篇中我们将更侧重于实际应用,去看看现今的 Markdown 的实用性,以及有哪些编辑器值得推荐给初接触 Markdown 的你。



Markdown 语法的演进

如果你是第一次接触 Markdown,可能会觉得之前提及的 Markdown 拥有的编辑功能稍显羸弱;而如果你之前接触过 Markdown,就会发现一个奇怪的现象:在一些 Markdown 文档中出现的标记字符,居然不在这份 John Gruber 写的官方文档里。这就自然联系到下一个话题——Markdown 语法的增强和不同语法之间的异同。

正如任何一门自然语言都会存在方言的现象一样,随着 Markdown 的发展和普及,越来越多人不满足于 John Gruber 定义的那些功能有限的标记字符,开始以他的语法为基础,拓展出各种各样的「Markdown 方言」。这些改进主要体现在两个方面:

  1. 增加新的标记字符,带来了新的编辑功能,例如表格、脚注和目录等。
  2. 修改了现有的标记字符,这主要出现在一些编辑器中,例如 Ulysses。

对基本语法的拓展

提到在编辑功能上对原生 Markdown 的拓展,最好的例子当属 Github Flavored Markdown。这是一套由 Github 网站为了帮助他们的主体用户群——程序员——更好的书写项目文档而推出的 Markdown 版本。由于其网站本身的影响力,以及他们的用户和 Markdown 用户高度重合,所以这套语法在互联网中得到了广泛推广。

原有的 Markdown 语法的功能稍显不足,Github Flavored Markdown 在前面所说的语法的三个方面都做出了相应的增强。同样的,你可以通过 官方文档 来查看全部的语法。相较原生语法,Github Flavored Markdown 主要做了以下改进:

  • 在对文字处理方面,它可以直接将网址高亮出来(原生语法需要加相应的标记字符)
  • 在对段落的处理方面,对原有代码块进行了增强,如果你在代码块后表明代码语言:
    ```python
    def 点赞机():
        if 文章不错:
            return 点赞
        else:
            return 差评
    ```

就能直接看到相应编程语言的语法高亮。

  • 要插入文章元素方面,它支持在 Markdown 里写表格,如果你这么写:
| First Header  | Second Header |
| ------------- | ------------- |
| Content Cell  | Content Cell  |
| Content Cell  | Content Cell  |

就会显示成:

First HeaderSecond Header
Content Cell Content Cell
Content Cell Content Cell

Github Flavored Markdown 是个很好的案例,说明了为什么会有人对原有的基本 Markdown 语法进行改进——就是为了满足各种原生 Markdown 没有提供的需求

除了 Github Flavored Markdown 之外,MultiMarkdown 也不能不提。事实上目前众多编辑器都或多或少从 Multimarkdown 获取了一些灵感,相比 Github Flavored Markdown,Multimarkdown 是一套功能更为强大,同时语法更复杂的体系。如果有兴趣,你可以去 官网 查看完整的语法文档。而你会在很多编辑器中都能发现,它们或多或少的支持了 MultiMarkdown 的语法。

不过如果你是初学者,我能给的建议是:先不要一上来就接触太多不同的增强型语法,这样会使得你愈发困惑。如果在日后使用中遇到了某些特殊的需求,例如脚注,再去搜索了解有哪些语法和编辑器支持你想要的那些功能1

对通用语法的修改

除了上面所说的对基本语法的修改,还有的编辑器会对某些在通用语法中出现过的标记字符进行定制。例如,删除线的语法通常情况下是~~要删除的文字~~,但是在 Bear 中,开发者将它定义成-要删除的文章-

这种情况的出现,主要还是不同的开发者对 Markdown 的标记字符的「好用」理解不同。遇到这种情况大可不必担心,一般的编辑器都会给出自己的标记字符文档,有的还会让用户做出选择,是使用通用的语法标记,还是这个编辑器专属的语法。

既然有了多种选择就有比较,而作为使用者,我认为我们只需认识到有这种「方言现象」的存在就好,如果过于纠结哪套语法更好,其实并不能提高多少使用上的效率。由于 Markdown 编辑器的效率高度依赖使用者的肌肉记忆,也就使得使用者的习惯才是最主要的影响因子。对于你来说,你习惯的语法才是效率最高的

Markdown 的使用

前面是完整的对 Markdown 的介绍,看完之后,理论上你应该能上手 Markdown。这时「什么时候该用」和「用什么工具」的选择就会浮现出来。事实上,我并不希望作为初学者你一开始就陷入「对工具得选择」而忘记了 Markdown 的初衷,所以接下来对这两个问题的回答,我都只会提出一两个例子,作为引导,而非像之前力求全面系统的阐述。

Markdown 的局限性

「什么时候该用 Markdown」,其实是个回答非常个性化的问题。为了厘清 Markdown 和其他编辑器的边界,与其枚举一个个应用场景,不如把问题改为「什么时候不该用 Markdown」

前文有提到,Markdown 只是一个「轻量级标记语言」,相比同为标记语言的 Latex 、Word 或 Pages 这类文字处理软件,更不用说 Indesign 这种专业级的排版软件,Markdown 在排版的功能上显得羸弱。与最熟悉的 Word 相比,稍微对比一下就能发现其中的缺陷:

  1. Markdown 无法对「段落」进行灵活处理。在 Word 中你可以随意插入文本框,调整它的位置。尽管这并不是一个常见的用法,但是这意味着,Word 能以段落为单位进行排版(Latex 也可以做到相似的效果),相比 Markdown 只能线性的对文字排版,专门的排版软件无疑是更能满足专业需求的。
  2. Markdown 对非纯文本元素的排版能力很差,最常见的例子就是图片。诚然,现在很多编辑器都支持了图文混排,但是受制于纯文本格式,Markdown 编辑器几乎不可能做到 Word 一样对图片灵活的调整位置,更不用说文字围绕图片进行自适应排版之类的效果。

可以看出,这些弱势都来源于 Markdown 本身的纯文本格式,因为 Markdown 从一开始就定位为「文字输入工具」,排版功能也是基于 HTML 的延伸,并不适合对排版格式自定义程度较高的文档进行排版。

适用 Markdown 的几个场景

尽管 Markdown 尚不是大众化的工具,但是感谢开发者们源源不断的创意,为我们提供了极为丰富的工具选择。工具的多样,让 Markdown 能渗透进各种各样的场景。小到写备忘录,大到完成一部书稿,都有相应优秀 Markdown 工具。想在一篇文章里罗列全部的场景基本不可能,所以我们在这篇还是从 Markdown 本身的特质出发,看看它在某些场景下的表现。

网络环境下的写作

Markdown 基于 HTML 语言而被开发出来,开发它的目的就是创造一门「更易读、更易写」的语言用于网络世界的写作。可以说,没有什么工具比 Markdown 更适合用于网络环境下的写作了。

早前的「网络环境下的写作」可能专指博客或者个人站点,但是随着移动互联网的兴起,微信公众号等媒介的出现,读者的阅读习惯也渐渐改变,Markdown 也顺应了这一时代的变化。对于原本的「自留地」——博客或个人站点—— Markdown 保持了一贯的方便,例如 MWeb 可以帮你把使用 Markdown 所写的文字一键生成静态网站。在长微博和微信公众号写作方面,Markdown 也有优势,例如 MarkEditor 可以直接把文章从编辑器中发送到微信(朋友圈或好友),也可以复制成微信公众号格式,省去了在微信后台编辑的功夫。

总结起来,在网络环境下的写作, Markdown 可以让使用者专心于文章书写,而非排版

文档协作

之前是利用了 Markdown 「写作即排版」的特点,而现在是利用它「纯文本格式」的优势。一份 Markdown 文本用任何软件在任何系统下打开,都能保证基本的格式不错乱(起码能打开没有乱码的纯文本文档),这使得:

  1. 团队成员间可以自由选用自己喜欢的操作系统和编辑器工具来进行写作,而不局限于 Word 或者 Google Docs等只支持富文本编辑的软件。
  2. 文档的展示方式不仅仅是在编辑器中,你可以随时把文档转换成网页,任何时候任何人都可以方便地查看。

用 Markdown 来协作,你既可以选择熟悉的共享文件的方式(借助网盘),也可以用 Simplenote 或者 Quip 这类内置了协作功能的编辑器。无论如何,用 Markdown 来文档协作会比其他工具更自由。

其他领域

正如上文所讲,由于开发者们的创意,让 Markdown 几乎渗透进每一个需要文字书写的领域。

统计学者可以利用 R Markdown 直接将自己的脚本和图表排版成一篇报告,这项功能甚至是直接集成到 RStudio(一款 R 语言的 IDE)中的;由于有 Pandoc 这个格式转换利器,理论上可以将 Markdown 转换为常见的 Docx 或者 Tex 格式文档,这让学术写作者和办公人士可以将 Markdown 作为初稿的工具;借助马克飞象等工具,使得 Markdown 可以和 Evernote 这类笔记软件结合起来。

这些 Markdown 进阶的用法,在本文就不做展开。由此来看,相比熟悉的 Word 等工具,Markdown 的应用场景不是更窄,反而是更广

Markdown 工具的推荐

本文是定位于完全不了解或者还没有习惯 Markdown 的读者来入门的文章,而不是给已有自己使用习惯或者工具选择的读者,同时也不是 Markdown 工具的横向对比评测,所以,在工具的选择上,我也只会给出我认为最适合入门的那一款。这意味着,这不是要选出最好的 Markdown 编辑器,而是最适合作为入门使用的 Markdown 编辑器。至于什么算是适合入门者的?我认为最好要达到以下三点要求:

  1. 能使用通用语法书写。尽管各式各样的拓展型语法增强了 Markdown 的功能,但是对于刚开始接触这门工具的人来说,首先掌握最常见的用法更利于以后的自由选择。
  2. 有明确的使用场景。Markdown 实在是太容易学了,但是对很多人而言,没有使用起来的原因之一是:缺乏一个明确的「这里我要用 Markdown」 的场景。所以编辑器的设计上最好有明确的使用场景。
  3. 在功能或设计上优化 Markdown。原则上来说,任何能输入文本的地方都能写 Markdown 格式的文本(甚至在 Word 里)。那么对于入门者的工具而言,一定要在某些地方优化了书写 Markdown 的体验。比如解决了图文混排,提供了语法高亮等一些附属功能。

下文针对各平台的推荐我都是根据上述三个角度来挑选的。所以再一次强调,以下的推荐只是我认为最适合入门者的编辑器,并不代表其他软件不如这三款或者不适合刚入门的人上手。事实上你可以完全根据上述三点,去自己感受和选择其他的编辑器。

iOS/macOS : Bear

在 Bear 之前,这两个平台可能要分开推荐,但是 Bear 的出现让它成为 Mac 和 iPhone(包括 iPad)用户最适合入门的选择。相比其他名声在外的软件,初出茅庐的 Bear 有着不少让人喜爱的特点:

  1. 双平台基础功能免费(多种格式导出和主题等一些不影响 Markdown 使用的高级功能收费)虽然缺少云同步功能让人遗憾,不过 Bear 作为一款 Markdown 的上手工具,从练习的角度来说功能上已经足够强大。
  2. 极高的颜值、支持图文混排、针对清单列表进行了优化。如果说,缺少云同步让你觉得 Bear 不能担起作为未来主力编辑器的重担,这些特质都让它可以成为备忘录和短笔记软件的首选。
  3. 对 Markdown 的语法进行了优化,但是也保留了通用语法可以选择。在插入网址等这类相对比较复杂的语法符号时,Bear 在编辑界面中进行了改进,使得初学者更容易理解,但是也给了用户使用 Markdown 通用语法的选择权。

尽管 Bear 只是刚面世不久的后起之秀,但功能的完成度极高,在产品设计上做出了许多对使用者,特别是刚上手 Markdown 的用户的改进。目前来说,Bear 是我认为最值得向初入 Markdown 大门的使用者推荐的工具。

关于 Bear 的更多介绍,可以继续阅读 这篇

Windows:Typora

尽管总的来看,Windows 上的 Markdown 编辑器的质量和数量逊色于 macOS,但是 Typora 绝不是一个将就的产品,而是真正有其优秀和独特的地方值得推荐。

作为一款 Windows 生态环境下的产品,它有着不少让人喜爱的品质。

  1. 简洁清新的编辑界面,有内置6款主题可选,让它在颜值上不输任何 macOS 上的编辑器。特别是在免费的条件下保证了软件界面的清爽,让人第一印象尤佳。
  2. 不仅仅是一款支持通用 markdown 语法的编辑器,在图文混排和表格等复杂格式的元素处理上都做出了相应的改良。让刚接触 Markdown 的用户易于上手这门语言。
  3. 书写文本的时候,打字机模式和专注模式都是很好提升使用体验的功能,很难想象这么深度的细节 Typora 都实现了。

特别值得说明的是,Typora 其实主打的特色是将编辑界面(带有 Markdown 语法标记)和预览界面合为一体,即输入完标记字符后,就会在窗口中显示为所表示的格式效果。

对于刚接触的 Markdown 的写作者来说,这个特性可以很好的缓解纯 Markdown 字符界面的不适感。但是我以为,即时预览的特性会使得可能出现的格式错误难以排除,特别是在对 Markdown 不熟悉的情况下,所以建议大家开启 Source Code Mode,即传统的 Markdown 标记字符和文本混合的编辑界面。

关于 Typora 的更多介绍,可以继续阅读 这篇

Android:易写

如果让我只用一个词来形容易写,那一定是「纯粹」。尽管乍看之下易写并不显得功能强大,但是正是它的简洁和易用让它十分适合初学者上手。

开发者在介绍中提到「易写的设计原则是保持简单」,所以它做到了小于 1 M 的软件体积;包含最基本的「重做」功能;支持基本的 Markdwon 格式。但是作为 Google 应用商店中评分 4. 7 的产品,它在使用体验上做到了足够的流畅和稳定,滑动页面时没有丝毫的卡顿。这看似最基本的要求其实是一款文字编辑器最应该做到的。而功能上的简单也让使用者能专心于书写而非摆弄工具。

虽然以简洁为美,但是它也有类似于夜间模式、字数统计和导出为其他格式等保障使用体验的功能。让人惊喜的是,易写还支持蓝牙键盘的快捷键,能有效的提高输入的速度。看来功能上的简约并非开发者的偷懒,而是有意为之。总的来看,易写是一款足够简单来上手,却能满足大部分刚接触 Markdown 用户的需求的产品。

关于编辑器选择的一点絮叨

现如今的互联网上有一股风气:当试图「客观」地进行对比时,总会想着把自己的个人情感抽离出来,站在第三者的角度来分析。

但对「编辑器的选择」这种事来说,我们大不可必如此「客观」,毕竟软件作为一种「客体」,势必会影响我们的情感。就推荐编辑器来说,可能你会听到很多种不同的建议,但是不妨先放下这些「客观」的比较,直接去试用(大部分桌面软件都会提供试用版),看看在使用中你的直接感受如何,再去「客观」的对比功能或者价格。相比先看完整的测评或者软件教程,我认为直接上手软件,试着把玩一些基础功能,更能带来直观的感受和让自己安心的决定。

结语

毫无疑问,只是「看完」了这篇文章你肯定是做不到行云流水的使用 Markdown,其实就像学习任何其他技能一样,掌握方法和原理和熟练的使用是两个不同的阶段。另一方面,由于 Markdown 本身可以说毫无门槛,可能看完本后你就已经掌握了基本的使用方法,但是在日后的使用中你有可能会遇上不同的问题,甚至是对 Markdown 的质疑,所以本文的另一个目的在于,当你对 Markdown 产生逻辑上的困惑时,能帮你更深层次的理解它

总而言之,看完本文不是学习 Markdown 的结束,而是一切的开始。希望你们写的开心!

相关阅读

特别感谢

在本文的写作过程中,收到了很多可贵和重要的建议和意见,正是这些珍贵的声音,让我有信心以「完全入门」为本文的标题。在此特别感谢以下伙伴对我的帮助(排名不分先后)@Yves@Hepo@codegass@子不语Rex@waychne@ElijahLee


  1. 通常情况下,能否使用一些特殊的语法,例如脚注,是取决于编辑器对其的支持情况。