Markdown不是用来“写”的,是用来“记”的。
我第一次意识到这件事,是在2018年的一个深夜。那时候我刚入行,为了向团队展示一个爬虫脚本的用法,我硬着头皮在Word里折腾了一晚上。调整缩进、纠结标题层级、试图让代码块和正文的字体看起来“不打架”……最后导出的PDF丑得连我自己都不敢发朋友圈。更绝望的是,第二天我想修改一个小细节,重新排版又花了我半小时。
那天晚上我偶然点开了一个名为Markdown的文件,.md后缀。我以为它只是个文本编辑器,结果发现它像是一个“隐形”的排版工具。你只管写,它只管美。
如果你也受够了在Word里为了一个居中标题抓耳挠腮,或者在知乎编辑器里因为突然跳出的格式错乱而崩溃,那么请相信,这篇文章就是为你写的。我们不谈枯燥的理论,只谈如何让你从“Hello World”一路狂奔,写出像Stack Overflow或掘金专栏那样干净、清爽、让人愿意读下去的技术文章。
一、 为什么是Markdown?因为你的手应该留在键盘上
在深入技巧之前,我想先解开一个心结:很多人觉得Markdown太简单,简单到“不够专业”。
这里有一个反直觉的事实:最复杂的排版系统,往往是Markdown。
当你使用Word或LaTeX时,你的注意力被分散了。你需要思考:“这个标题是二级还是三级?”“这段代码要不要加行号?”“列表符号是圆点还是方块?”每一次格式决策,都是对你创作流的打断。
Markdown的设计哲学是内容优先。它强迫你专注于“我想说什么”,而不是“我该怎么让它看起来漂亮”。一旦你掌握了语法规则,你的手指就像装了导航一样,在字母和符号之间自动组合出结构。
想象一下这个场景:
你正在思考一个算法的逻辑,突然有了灵感。如果你用的是Word,你得先找到“开始”选项卡,点击“居中”,再选字号,再粘贴你的代码……灵感可能这就没了。
但如果你用的是Markdown,你只需要敲击
#,接着是空格,接着是你的标题,回车,接着是代码,用 “` 包裹起来。整个过程不超过3秒。这就是为什么GitHub的README、Stack Overflow的回答、甚至苹果的开发文档,都选择了Markdown。因为它不是为了炫技,而是为了让思维流动起来。
二、 从Hello World到“你好,技术博客”:你的第一段Markdown
让我们从一个最小的可运行单元开始。别被“代码”这个词吓到,Markdown的本质就是文本,你用记事本就能写。
新建一个文本文件,命名为
first_post.md,输入以下内容:# 我的第一篇技术博客 你好,世界。这是我用Markdown写的第一篇文章。 ## 为什么我要学这个? 因为我不想再和Word里的段落缩进搏斗了。 ### 一个小例子 这是一个列表: - 第一点:学习Markdown很简单 - 第二点:它可以自动生成目录 - 第三点:写完可以直接发布 这就是全部。
现在,如果你把这段内容丢进任何一个Markdown预览工具(比如VS Code的预览模式,或者在线编辑器如StackEdit),你会看到什么?
一个带有清晰层级、完美列表、干净段落的文章。
注意看这里的细节:
#后面必须跟一个空格,然后才是标题内容。这是最常见的初学者错误:写成#我的标题,结果它不会被识别为标题,而是变成普通文本。- 空行是用来分隔段落的。Markdown里,两个连续换行(Enter键按两下)才代表一个新的段落。如果你忘记空行,两段文字会粘在一起,阅读体验极差。
三、 正文的骨架:标题与段落
在技术博客中,结构就是读者扫视的地图。如果结构混乱,读者会在三秒内关掉页面。
1. 标题的层级法则
Markdown支持六级标题,从 # 到 ######。但在实际写作中,我强烈建议你只用到三级标题,甚至只用到两级。
为什么?因为大脑处理信息有认知负荷。
# 一级标题:通常用于文章主标题,全文只有一个。## 二级标题:用于主要章节,如“环境配置”、“核心逻辑”、“常见问题”。### 三级标题:用于子章节,如“安装步骤”、“代码示例”、“注意事项”。
超过三级标题的文章,通常意味着内容组织有问题,或者读者已经失去了耐心。记住:扁平化的结构,优于堆砌的层级。
2. 段落的呼吸感
很多新手写文章,喜欢大段大段的文字,密密麻麻,像一堵墙。Markdown的优势在于,它天然鼓励短段落。
每当你想换行时,不要只用一个回车(在Markdown中,单个回车被视为空格,不会换行)。你需要空一行,才能形成一个新的段落。
这是第一段。它介绍了问题的背景。
这是第二段。它解释了解决方案的核心思想。
注意中间的空白。这不仅仅是格式,这是视觉呼吸。对于技术文章来说,每2-3个句子就应该有一个视觉上的停顿,帮助读者消化信息。
四、 强调的艺术:斜体、粗体与删除线
在讲课或写文档时,我们如何突出重点?Word里我们会用红色加粗,或者下划线。但在Markdown中,有更优雅的方式。
1. 斜体:*文本* 或 _文本_
斜体通常用于表示术语、外语单词或轻微的强调。
Python中的 *列表推导式* 是一种非常优雅的写法。
2. 粗体:**文本** 或 __文本__
粗体用于关键概念、警示信息或必须注意的点。
**注意**:在Linux系统中,权限管理是安全的核心。
3. 删除线:~~文本~~
删除线在技术博客中有一个独特用途:表示过时信息。
旧的配置方法是:`sudo apt-get install xxx`
~~现在推荐使用:~~ `sudo apt install xxx`
当你回顾半年前写的教程时,你会发现删除线是你对读者的诚实。它告诉读者:“这里曾经是这样,但现在已经变了。”
五、 代码:技术博客的灵魂
如果你写的是技术文章,代码块就是你的战场。代码排版不好,整篇文章的专业度直接归零。
Markdown支持三种代码相关语法:行内代码、代码块、带有语言标识的代码块。
1. 行内代码:反引号 `
当你需要在一段话中提到一个变量名、函数名或命令时,使用单个反引号。
在Python中,你可以使用 `print()` 函数来输出内容。
效果是:在Python中,你可以使用 print() 函数来输出内容。
注意:反引号不是单引号(’)也不是双引号(”),它是键盘左上角 Esc 下方那个键。很多中文输入法下,这个键可能会切换状态,记得检查。
2. 代码块:三个反引号 `
当代码超过三行,或者需要独立展示时,使用代码块。
```
function helloWorld() {
console.log('Hello, World!');
}
```
3. 语言高亮:这才是专业感的来源
仅仅用代码块是不够的。如果你能在反引号后加上语言名称,编辑器就能进行语法高亮,让关键字、字符串、注释颜色分明。
```python
def calculate_fibonacci(n):
"""计算斐波那契数列的第n项"""
if n <= 1:
return n
else:
return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)
# 输出前10项
for i in range(10):
print(f"第{i}项: {calculate_fibonacci(i)}")
```
看,是不是立刻有了IDE的感觉?关键字 def、if、else、return 会有不同的颜色,注释是绿色的,字符串是橙色的。这种视觉上的区分,能极大降低读者的认知负担。
常见的语言标识符速查:
- 编程语言:
python,javascript,java,c,cpp,go,rust,ruby,swift - 脚本/Shell:
bash,sh,zsh - 数据/标记:
json,xml,yaml,markdown,sql,html,css - 其他:
text(纯文本,无高亮),diff(代码差异对比)
六、 列表与引用:构建逻辑层次
技术文章往往涉及步骤、对比和解释。Markdown的列表和引用功能,能让这些内容井井有条。
1. 无序列表:短横线 - 或星号 *
- 步骤一:安装依赖
- 步骤二:配置环境
- 步骤三:运行测试
或者用星号:
* 优点:速度快
* 缺点:学习曲线陡
2. 有序列表:数字加点 1.
1. 打开终端
2. 输入 `npm init`
3. 按提示填写信息
注意:数字不需要连续,Markdown会自动排序。但为了可读性,建议从1开始连续写。
3. 嵌套列表:缩进两个空格
这是新手最容易出错的地方。列表的嵌套靠的是空格,不是Tab。
## 安装指南
- 前置条件
- 已安装 Node.js
- 已注册 npm 账号
- 执行命令
1. 初始化项目
- 使用 `npm init -y`
2. 安装依赖
- 使用 `npm install package-name`
看,第二层列表前有两个空格,第三层有序列表前有两个空格。这种缩进关系清晰表达了逻辑层级。
4. 引用块:大于号 >
引用用于引用他人观点、补充说明或强调重点。
> 代码是写给人看的,只是顺便让机器执行。
> —— Harold Abelson
这是一个常见的误解。
如果需要多层引用,可以嵌套 >:
> 第一层引用
> > 第二层引用
七、 链接与图片:连接世界的桥梁
技术博客不是孤岛。你需要链接到参考文献、官方文档、相关教程;你需要插入截图来展示界面、流程或结果。
1. 链接:[文字](URL)
请访问 [Python官方文档](https://docs.python.org/3/) 获取更多信息。
链接文字和URL之间不能有空格。否则,链接会失效。
2. 图片:

注意:! 后面是[],里面是图片的替代文字(用于SEO和屏幕阅读器),再后面是(),里面是图片的URL。
3. 图片加标题(可选)
有些Markdown解析器支持在图片URL后加标题:

鼠标悬停时,会显示“架构图细节说明”。
4. 相对路径图片
如果你的图片和文章在同一目录,或者在子目录中,可以直接用相对路径:

这在博客部署到静态站点(如GitHub Pages、Hexo、Hugo)时非常有用。
八、 表格:让数据说话
有时候,列表无法清晰表达对比关系。比如,对比不同数据库的性能,或者展示API的参数说明。这时候,表格是最佳选择。
| 特性 | MySQL | PostgreSQL | SQLite |
| :--- | :---: | :---: | :---: |
| 类型 | 关系型 | 关系型 | 嵌入式 |
| 适用场景 | Web应用 | 复杂查询 | 本地测试 |
| 性能 | 高 | 极高 | 中等 |
表格的语法细节:
- 第一行是表头,用
|分隔。 - 第二行是分隔线,必须包含
-(至少三个),用于定义列的对齐方式。 - 冒号
:控制对齐::---左对齐(默认):---:居中对齐---:右对齐
如果不想指定对齐,第二行可以简写为 |---|---|---|。
表格是技术文档中非常高效的工具,尤其是API文档、参数说明、对比评测等场景。
九、 进阶技巧:让文章更有“人味”
现在你已经掌握了基本语法,但一篇文章要想“好看”,还需要一些排版上的小心思。
1. 水平分割线:三个星号 *** 或三个短横线 ---
这是一段正文。
***
这是另一段正文,中间用分割线隔开。
分割线可以用来分隔文章的不同部分,或者在长文中起到“休息”的作用,让读者的眼睛得到放松。
2. 任务列表:复选框 [-] 和 [x]
在GitHub风格的Markdown中,支持任务列表:
## 发布前检查
- [x] 检查拼写错误
- [x] 验证所有链接有效
- [ ] 添加元数据(标题、标签)
- [ ] 生成摘要
这个功能非常适合用在“TODO”列表或“更新日志”中,让读者清楚地看到进度。
3. 脚注:[^1]
这是一个引用了脚注的句子[^1]。
[^1]: 这是脚注的内容,会显示在页面底部。
脚注用于放置补充说明、参考资料或作者备注,避免打断正文的阅读流。
4. 数学公式:LaTeX支持
如果你写的是AI、算法或数学相关文章,Markdown通常支持LaTeX公式。
行内公式: $E=mc^2$
块级公式:
$$
\int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
注意:并非所有Markdown解析器都支持公式,需要确认你的平台(如Typora、Obsidian、大多数技术博客系统)是否开启了对MathJax或KaTeX的支持。
十、 工具推荐:从记事本到专业编辑器
我知道,理论懂了,但手还是笨的。你需要一个好用的工具来辅助你。
1. 零基础起步:Typora
Typora是一款“所见即所得”的Markdown编辑器。你输入语法,它立即渲染成排版好的文章。没有预览窗口,没有切换按钮,就像在Word里打字,但格式是Markdown。
- 优点:极致简洁,上手零门槛,体验流畅。
- 缺点:收费软件(但有免费试用),跨平台支持不错。
- 适合人群:追求极致写作体验,不喜欢折腾配置的用户。
2. 程序员标配:VS Code + 插件
如果你已经在用VS Code写代码,那么装一个 Markdown All in One 插件,你就拥有了一个强大的Markdown编辑器。
- 优点:免费、开源、高度可定制,支持预览、快捷键、表格编辑等。
- 缺点:需要一些配置,初始界面稍显复杂。
- 适合人群:开发者、喜欢自定义工作流的用户。
3. 知识管理:Obsidian
Obsidian不仅是一个编辑器,更是一个双向链接的知识库。你可以在笔记之间建立链接,形成知识网络。
- 优点:本地存储、插件生态丰富、适合长期知识积累。
- 缺点:学习曲线较陡,需要时间研究其生态。
- 适合人群:研究者、知识工作者、建立个人Wiki的用户。
4. 在线编辑器:StackEdit / Markdown Nice
如果你不想安装软件,只是想快速写一篇文章然后发布到微信公众号、掘金、知乎等平台,在线工具是最佳选择。
- StackEdit:功能强大,支持云端同步,预览效果好。
- Markdown Nice:专门针对国内平台优化,支持一键同步到微信公众号、知乎、掘金等,还能自定义主题颜色。
十一、 避坑指南:新手常犯的10个错误
在我指导过的大量初学者中,以下错误出现频率最高。记住它们,你可以少踩很多坑。
- 标题后没加空格:
#标题错误,# 标题正确。 - 斜体/粗体符号后没加空格:
**粗体**正确,**粗体**(前后无空格时,如果紧贴文字,有时渲染异常)。建议符号和内容之间保持一个空格,或者确保符号前后有非字母字符。 - 链接和文字间有空格:
[文字] (URL)错误,[文字](URL)正确。 - 图片路径错误:使用相对路径时,忘记图片或Markdown文件的位置关系。
- 列表缩进错误:用Tab而不是空格,导致嵌套失败。
- 代码块未指定语言:虽然不报错,但失去了语法高亮,显得不专业。
- 表格分隔线格式错误:
|---|中,冒号位置不对,导致对齐混乱。 - 换行符误解:在一个段落内按一次Enter,不会换行,只会产生一个空格。要换行需按两次Enter。
- 特殊字符未转义:
*、_、#、[、]、()等符号在Markdown中有特殊含义。如果你想在正文中显示它们,需要用反斜杠转义,如\*、\#。 - 过度使用格式:不要整篇文章都用粗体或斜体。过多的强调等于没有强调。
