---
title: 让文档回归本质，为什么应该用Markdown
date: 2015-09-04
draft: false
summary: '早期写给工程团队的 Markdown 文章，现在看仍然和这次迁移方向很一致。'
slug: why-should-use-markdown
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/3883497036968694
aliases:
- /markdown-tools/
tags:
- markdown
- writing
- tooling
topics:
- writing
type: post
---

前几天的锤子发布会上，老罗宣称锤子便签支持Markdown，但同时表示是被产品经理逼的，自己也不会用，说Markdown是一种小众的极客使用的工具。
本文就介绍下Markdown，以及为什么应该用Markdown，还有支持Markdown的各种工具。
<!--more-->

如果您已经非常熟悉Markdown了，可以直接跳到后面查看工具介绍。

首先说明下什么是Markdown，维基百科的定义是：

> markdown是一种轻量的纯文本标记语言。

纯文本对应的是富文本或者叫做格式化的文本，典型的代表是微软的word文件。

自从电脑发明以来，电脑的主要用途之一就是处理各式各样的文档，于是涌现出各式各样的文字处理工具，也就是文档编辑器。

码农们编写文档工具遇到的首要问题是如何处理文档的内容和格式。内容为里，格式为表，内容是文档最重要的，但人类对“表”的追求又是无止境的，没了格式的文档就如让人都不穿衣服一样。

举个例子：将“为什么码农喜欢markdown？” 这句话的“码农”二字加粗，“markdown”这个单词加斜体。先不考虑，颜色，字体，标题，段落啥的，我们看看各家编辑器是如何表示。

微软早期的rtf（Windows自带的写字板的格式）版本表达出来是这个样子（只是截取了一段，Word的格式更复杂，就不展示了）：

![UIysses][image-1]

用HTML格式，也就是网页格式表达出来是：

	为什么<strong>码农</strong>喜欢<em>markdown</em>？

大家不要被代码吓跑，粘贴这两个例子的目的是让大家明白，现在的编辑工具在表达格式上花费了太多精力。本来很短的一句话，加上格式后除非使用专门的工具，否则就很难阅读了。再加上微软这样的复杂的私有文件格式，除了微软自己，其他人无法开发出完全兼容的编辑器，也就是说，一旦使用这种工具编辑文档，就被绑死到一家公司上了。

于是码农们发明了各种轻量的纯文本标记语言，比如 大家熟悉的维基百科的wiki语言，用来生成文档的AsciiDoc语言。本文要说的Markdown也是其中一种。纯文本标记语言解决问题的思路是一致的：

1. 简化文档格式 丢弃一切复杂的，不容易表达的，或者属于锦上添花式的格式。比如字体，颜色，甚至表格等。
1. 用特殊字符来标记必要的格式 比如 标题 段落 加粗 列表等，比纯文本复杂些，但基本不影响阅读。
1. 通过简单的工具即可转换为HTML，PDF等格式。

纯文本标记语言有什么好处呢？

1. 方便编辑。任何一个文本编辑器就可以编辑，连大家熟悉的Windows记事本也可以。让编写者专注于内容，而不是格式。是否有为了调整不听话的编辑器（好吧，我说的就是word）的格式而浪费大量时间的经历？
1. 可以放到版本管理系统中，追踪历史变更。这对码农们来说太重要了，这样文档可以和程序代码一起放版本管理系统中了。如果你不清楚版本管理系统，只需要把它理解成可以永久追踪的修改历史记录即可（版本管理系统可以另开一篇文章了）。这样，多人协作编辑的时候，也不用担心文档被改坏了。

那说了这么多好处，为啥纯文本标记语言里就Markdown火了？开始这些纯文本标记语言还基本上只流行于开发人员中，各种语言的差异也不是很大。Markdown发明于2004年，创始人为约翰·格鲁伯（John Gruber）。但自从2010年后，Github，reddit等网站支持Markdown，之后各种支持Markdown的工具越来越多，相关的开发工具也越来越多，Markdown也越来越普及，逐渐从码农群体向外传播。

还以上面那句话的例子，用Markdown表达出来是：

	为什么**码农**喜欢*markdown*？ 

是不是虽然有点干扰，但不至于影响阅读？虽然叫做标记语言，其实也就不到十条规则，大家不要被语言吓跑，以为写这个要学一种编程语言，变码农了。具体的语法规则任何一个编辑器都会有示例，这里不多做介绍。详细参看[Markdown 语法说明][1]。

下面我们介绍下Markdown周边的工具。

1. Markdown编辑器 说到编辑器可能有人问了，既然你说任何一个文本编辑器就可以编辑，为啥还要专门的编辑器？专门的编辑器一般在以下几个方面做增强支持：预览，快捷键支持，导出其他格式文档。编辑器很多，列举几个主要的。
	*   **[Mou][2]** 是一款Mac上的Markdown编辑器，也是笔者最早使用的Markdnow编辑器之一。国人开发，对中文支持也比较好。   
	*   **[CuteMarkEd][3]** 跨平台，支持Windows，和Linux。  
	*   **[MarkdownPad][4]** Windows下的Markdown编辑器。 
	*   **[马克飞象][5]** 国人开发的支持Evernote的Markdown编辑器，文档保存在Evernote中，当前支持网页版，Windows和Mac桌面客户端。笔者一直在抱怨Evernote不支持Markdown，马克飞象一定程度上填补了这个缺憾。
	*   **[mweb][6]**  mac下的markdown编辑器，支持发布到evernote，以及各种博客系统。
	*   **[typora][7]** 一款很有特色的编辑器，所见即所得，非常简洁。当前支持Mac，未来会支持Windows/Linux。
	*   **[stackedit.io][8]** 一款发布功能很强大的编辑器，支持发布到Blogger，Dropbox，Github，Google Driver,SSH server,Tumblr,Workpress等。

1. Markdown写作工具 编辑器只关心编辑，但写作工具还需要关心文件保存在哪儿，怎么管理，怎么多个设备同步等等。
	*   **[UIysses][9]** 非常漂亮和强大的Mac上的写作工具，支持iCloud同步，支持iPad。全屏编辑状态可以让你心无旁骛的专心于写作。隐藏了部分Markdown标签，没有完全展示Markdown源码，让不熟悉Markdown的人也可以很容易上手，当然同时带来的缺点就是有时候不太听话。另外就是略贵，当前283￥。
	![UIysses][image-2]   
	*   **[Write!][10]** 这是Windows上的可以媲美**UIysses**的写作工具。笔者未使用体验。当前还是beta版本，不过不是原生支持Markdown，而是支持导出为Markdown。  
	*   **[DayOne][11]** 鼎鼎大名的日记工具，支持Markdown支持各种同步，支持Mac和iOS。
	*   **[简书][12]** 国内的写作社区 支持Markdown编辑器
1. Markdown 博客工具
	*   **[farbox][13]** 支持Markdown在线博客托管服务，国人开发，支持客户端编辑器，需付费。适合不想自己搭建博客系统的用户。   
	*   **[logdown][14]** 也是支持Markdown在线博客托管服务。  
	*   **[wordpress][15]** 这个无需多介绍了，老牌的开源博客系统，后来支持Markdown。也支持托管服务，就是老被墙。   
	*   **[Ghost][16]** 开源的博客系统，支持后台编辑器和用户系统，需要数据库，适合搭建独立博客。笔者公司的博客也是基于Ghost的。  
	*   **[Jekyll][17]** Github官方的支持的博客系统，Github的Pages使用的就是Jekyll。纯静态，不支持管理后台，适合和Git配合使用。笔者的个人博客就是基于Jekyll搭建的，数据托管在Github上。   
	*   **[gitblog][18]** 国人开发的开源博客系统，基于git，和Jekyll类似。
1. Markdown 多人协作文档管理以及编辑系统
	*   **[Gitbook][19]** 基于Git(一种新的版本管理系统)的多人协作写书的系统，适合编写成体系的文档。包括图书编写工具，基于Markdown，支持目录，章节引用，以及样式定义。图书的导出工具，支持pdf,epub,网页等格式。图书的发布销售，发布后用户可以直接在线购买电子版。它的多人协作是通过版本管理系统来实现的。Gitbook前两天发布了桌面客户端，编辑体验进一步提升。笔者公司的新手指南就是通过Gitbook编写的。
		书籍管理界面：
		![UIysses][image-3]
		编辑界面:
		![UIysses][image-4]    
	*   **[Quip][20]** Quip并不支持Markdown编写，但支持导出Markdown。但Quip的多人协作编辑体验太棒了，所以提一笔。等以后介绍团队文档工具的时候再详细介绍。  
	*   **[Github Wiki][21]** Github的Wiki原生支持Markdown，作为团队的文档管理是一个不错的选项。   
	*   **[gollum][22]** 开源的基于git的Markdown wiki系统
	*   **[为知笔记][23]** 国人开发的团队笔记工具，原始支持markdown，不过没有提供明显入口，需要将文档后缀设置为md才支持。 
	*   **[leanote][24]** 开源的支持Markdown的团队笔记系统，也可以当做博客系统使用。

好了，说了这么多Markdown的好处，您可能要问，那Markdown就没有缺点了？

1. Markdown精简文档的格式，但每个人对文档必须的格式有不一样的理解。比如有人认为表格是多余的，另外的人可能觉得表格必不可少。于是Markdown出现了许多扩展。您使用的时候可能需要先了解下您的编辑器支持哪些扩展。
1. 插入的图片不支持设置大小 也就是说您必须先把图片修改成合适的大小再插入。虽然这个略麻烦一些，但好处您不用担心不小心把一个好几兆大的图片给插入到文章中导致浪费流量。 

介绍了这么多工具，不知道是否有让您动心尝试Markdown的工具。人生苦短，为啥把精力浪费在调整文档格式上呢？

[1]:	http://wowubuntu.com/markdown/
[2]:	http://25.io/mou/ "Mou"
[3]:	http://cloose.github.io/CuteMarkEd/ "CuteMarkEd"
[4]:	http://markdownpad.com/ "MarkdownPad"
[5]:	http://www.maxiang.info/ "马克飞象"
[6]:	http://www.mweb.im/
[7]:	http://typora.io/
[8]:	http://stackedit.io "stackedit"
[9]:	http://www.ulyssesapp.com/ "UIysses"
[10]:	https://wri.tt/ "Write!"
[11]:	http://dayoneapp.com/ "DayOne"
[12]:	http://www.jianshu.com/ "jianshu"
[13]:	https://www.farbox.com/ "farbox"
[14]:	http://logdown.com/ "logdown"
[15]:	https://wordpress.com/ "wordpress"
[16]:	https://ghost.org/ "ghost"
[17]:	http://jekyllrb.com/ "Jekyll"
[18]:	http://www.gitblog.cn/ "gitblog"
[19]:	https://www.gitbook.com/ "Gitbook"
[20]:	https://quip.com/ "quip"
[21]:	https://github.com/ "github wiki"
[22]:	https://github.com/gollum/gollum "gollum"
[23]:	18
[24]:	19

[image-1]:	./rtf-800.png
[image-2]:	./uiysses.png
[image-3]:	./gitbook-1-800.png
[image-4]:	./gitbook-2-800.png
