这是一篇关于Markdown入门趣文,详细介绍了碰到一个陌生技术的经典三问:Markdown是什么,为什么要用Markdown,以及如何使用Markdown。相信看完之后你也会对Markdown燃起学习的兴趣。
(1) Markdown是什么?
先来段较为官方的定义:
Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,目前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。如GitHub、Reddit、Discord、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被用来撰写电子书。
——选自维基百科Markdown词条
个人觉得,Markdown就是将文档如何排版明确写出来的一种语言,一个Markdown文档=内容+样式。
(2) 不用Markdown的窘境
对于我这种懒狗来说,为了写文章或者记笔记专门去学习一门语言,即使这是一门很简单的语言,那也大可不必,有这个时间躺着不好吗?那我后面为啥走上了真香的道路了呢,这就要从电脑的文档编辑说起。
我们先来假设一个场景,你现在要在电脑上保存一段文字信息,你会怎么做?我不知道大家怎么保存,反正我的第一反应就是右键桌面,然后新建一个txt格式文件,然后复制粘贴,搞定。所以txt格式的文件是能够保存文字信息的。
那如果现在不仅要保存文字信息,还要保存图片信息,可能还要梳理一下顺序,列个标题目录啥的,那这个不支持文字格式的txt就搞不定了,然后你会怎么做呢?很多人就想起了Windows上的另一款经典软件Microsoft Word。没错,利用Word生成的doc(x)文件,不仅能够存储文字、图片、表格,还能实现任何你能想出来的文档格式,什么居中呀,三号仿宋体啦,段落间隔20磅等等。反正你能想到的,它都能实现,你想不到的,说不定它也能实现。
那故事说到这里,好像已经没有啥说的了,既然word这么强大,生成的doc(x)文件可以实现这么多功能,那还有学Markdown的必要吗?且慢,如果我要让你将整理好的文档先发布到掘金上,然后同步发布到其它的博客网站,微信公众号啥的,阁下又该如何应对?
是的,word的功能很强大,doc(x)文件能够承载的信息也很多,但是这种带样式的信息是跟生成平台牢牢锁死的,跨平台性很差。你可以原封不动带样式复制过来,但是你在word里面看到的效果很好,但同样的效果在A网站里面很难看,在B网站缺了几种样式,最后你还是只能在发布网站的富文本编辑器里边看边调。
而且word功能强大,就意味着这玩意学习成本不低,从B站上各种关于word的学习视频就知道了,动辄十几个小时起步。不是,我就简单记个笔记,写个博客而已呀,为啥我还要去了解这么多关于排版布局的东西呢?能不能我只管内容,不用操心这些乱七八糟的样式布局呢?
(3) 为什么要用Markdown?
其实Markdown的设计理念有点类似编程当中接口的概念。
对于一个文档来说,内容和样式同样重要。内容是固定的,它不会随着文档所处的位置而变化,不会说在本地文件中“天空是蓝色的”,然后到了博客网站上就变成了“天空是五彩斑斓的黑”。但样式却是变化的,“天空是蓝色的”在本地可能是五号字体,但到了网站上就是四号字体了。
所以,能不能将样式的实现方式交由各个展示平台自己来决定?比如这行文字是标题,但是标题到底是多大的文字,文字是红色的还是蓝色的,段落之间间距多少,由你们网站或者软件自己来决定。
是的,Markdown就是干了这么一件事情,它只会记录内容和“样式接口”,而具体的样式是由各个平台的Markdown编辑器来实现的。这样就很巧妙的解决了上面的跨平台问题,真正实现“一次编写,到处展示”的效果。
而且由于Markdown是轻量级的语言,常用的语法也就那么十来个,稍微看一下就能上手,学习成本极低,跟word的学习简直是天壤之别。
(4) Markdown编辑器
我使用Typora作为本地的Markdown编辑器,这款软件操作简单且非常简洁,且支持Markdown实时预览(就是不做源码和展示区分,都在同一个页面)。有的人觉得那种切分成两半,一边编辑,一边看效果才是Markdown,我倒是觉得Markdown实时预览更符合我们之前在word上的操作经验,选哪种因人而异吧。
(5) Markdown常用语法
Markdown常用语法总结如下:
换行分隔标题,链接图片格式,引用列表表格,勾选代码公式。
-
换行
-
语法
第一行<br> 这里换行了 -
效果
第一行
这里换行了
-
-
分隔线
-
语法
*** -
效果
-
-
标题
-
语法
# 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 -
效果
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
-
注意
- Markdown只支持六级标题;
-
-
超链接
-
语法
[显示的文字](要跳转的网页地址 "鼠标悬停时候显示的文字") -
效果
-
注意
- "鼠标悬停时候显示的文字"这一部分可以省略;
-
-
图片
-
语法
 -
效果
-
注意
-
"鼠标悬停时候显示的文字"这一部分可以省略;
-
如果是网络上的图片资源,可以直接复制获得其图片地址;但如果是自己的图片,那么就需要地方来存储图片,具体方式如下:
方式 优点 缺点 自建图床 稳定可控 维护需要花费一点精力和金钱 公共图床 简单,有的时候可白嫖 不太稳定可控,图床服务商跑路了资源就没了 本地存储 不用担心资源丢失,绝对免费 无法发布到网上 目前我采用的方式是本地存储+手动上传资源的方式,虽然麻烦,但风控可控,不会莫名奇妙出现资源丢失的问题,也不用刚开始就给自己上一个服务器花费的debuff。
-
-
-
文字格式
-
语法
*斜体* **粗体** ***斜体加粗*** ~~删除线~~ -
效果:
斜体 粗体 斜体加粗
删除线
-
-
引用
-
语法
> 这里是引用内容 -
效果
……(省略100万句话)以上的话,我绝对没有说过!!!
——选自《鲁·话被别人引用最多·但我什么都不知道·迅语录》
我引用了小明的话:
小明引用了小红的话:
小红引用了迅哥儿的话:“这不是我说的。”
-
注意
-
虽然引用一般用于引用别人的文章著作中内容,但是现在博客也经常用于在开头或者结尾,写引言或者总结语时候用到,所以Markdown的语法不一定要拘泥于它们说明,你可以按照你的想法来用。
-
上面的第二个效果就是引用的嵌套效果,就是在引用当中再引用,理论上是可以无限引用下去,但不会有谁这么无聊,毕竟不是每个人都是迅哥儿。
-
当然,既然引用当中能够嵌套引用,自然也可以嵌套其它的语法,比如加粗,标题,列表等等,这些可以根据实际情况来使用。
-
-
-
无序列表
-
语法
- 内容1 - 内容2 - 内容3 -
效果
- 内容1
- 内容2
- 内容3
-
注意
- 无序列表有三种实现语法减号、加号和星号,按照自己的习惯选择一种记住就行,没有必要记住所有的;
-
-
有序列表
-
语法
1. 内容1 2. 内容2 3. 内容3 -
效果
- 内容1
- 内容2
- 内容3
-
注意
- 阿拉伯数字后一定要带点和一个空格,有序列表的语法才能生效;
- 中文数字,(1)或者1)这些均不能构成有序列表;
-
-
表格
-
语法
| 这列靠左 | 这列居中 | 这列靠右 | | :------ | :------: | ------: | | 数据1 | 数据2 | 数据3 | | 数据4 | 数据5 | 数据6 | -
效果
这列靠左 这列居中 这列靠右 星期一 爬山 星期二 潜水 星期三 拳击 -
注意
-
语法格式当中的第二行中的连字符-,数量要为三个或三个以上。
-
如果想要表中的内容靠左、靠右或者居中,可以在左侧、右侧或者两侧添加冒号:来控制。
-
不得不说Markdown的表格的确难用,这也是我为数不多对于Markdown不太满意的地方。对于Markdown表格创建麻烦的问题,可以在Typora中解决,或者使用一些在线的Markdown Tables Generator,使用图形化界面来生成;
-
对于表格中的另一个需求:合并单元格,这个在纯Markdown语法中真的是无解,我看了不少教程,基本都是HTML代码来解决的,但是并不是所有网站的Markdown编辑器都支持这种方式,所以只能根据实际情况来处理了。
-
-
-
任务列表(勾选)
-
语法
- [x] 任务一已完成 - [ ] 任务二未完成 -
效果
-
任务一已完成
-
任务二未完成
-
任务三未完成
-
-
注意
- -与[ ]之间有一个空格,[ ] 与之后的文字有一个空格,如果是未完成情况,那么[ ]中间也要有一个空格;
-
-
代码块
-
语法
```任意语言类型 ``` -
效果
public static void main(String[] args) { System.out.println("Hello World!"); } -
注意
-
注意,`不是英文引号,而是英文输入法的情况下,按键1(不是小键盘的1)左边的按键输入的,叫反引号。
-
任意语言类型可以是java,markdown,shell,javascript等等,这个地方可以省略,但是省略之后代码不会语法高亮显示,如果你的软件或者网站有高亮显示的功能的话。
-
-
-
公式块
-
语法
$$ 公式内容 $$ -
效果
-
注意
- 公式块的语法很复杂,这是肯定的,因为数学公式本身就是复杂的。但是不要紧,如果仅仅是记录平常的信息,以及写一些软件相关的技术博客,基本用到的情况很少,等用到的时候再去查一下怎么写就好了,实在不行截图也不失为一种解决方法。
-
-
其它
以上仅仅是经常用到的Markdown语法,还有一些不怎么常用的,或者比较复杂的语法,比如图表语法,还是那句话,等用到的时候再去查,现在你记得了,长时间不用也会忘掉的。记住,我们不是在考Markdown知识相关的考试,没有必要面面俱到。
(6) 参考资料
备注: 本文发布于稀土掘金平台(结网羡鱼007),也会同步发布于个人微信公众号(结网羡鱼007)。