
1. Markdown 到底是什么为什么博客写作离不开它1.1 从一次写博客的崩溃说起我第一次用 Markdown 写博客是在被编辑器折磨到崩溃的晚上。当时我在后台写了一篇带代码、带表格、还带公式的技术笔记切到 HTML 源码看一眼再切回来格式直接乱掉图片路径也带了一堆没见过的转义符。那篇文章最后花在排版上的时间比正文还长。后来我在一个技术社区看到有人把 Markdown 叫做“博客写作的利器”我半信半疑下载了一个编辑器把文章用井号和星号重写了一遍习惯之后发现曾经让我最头疼的排版问题几乎全部消失了。这不是玄学而是因为 Markdown 本身就用纯文本承载了文章的结构化信息不依赖某个后台的私有存储格式。从那以后我的写作流程发生了很大变化。以前写文章要在工具栏里找字号、找颜色、调缩进现在只要记得#代表标题、**代表加粗、代表引用就够了。Markdown 给我的感受是它把写作从“排版拉扯”里解放了出来。你不用再关心文字在屏幕上长什么样只需要关心内容本身是什么。这篇东西不打算给你讲晦涩的规范而是从一个实际写博客的人的角度把 Markdown 语法、编辑器选型、输出工作流和常见坑一次性讲清楚。不管你是刚接触写作的新手还是想切换写作文档流的程序员、自媒体创作者都能从中找到直接能落地的方案。1.2 Markdown 的核心逻辑内容与样式分离Markdown 的核心逻辑说白了就是内容与样式分离。你用#表示一级标题用**表示加粗这些符号本身就是语义标记浏览器、博客后台、笔记软件拿到这串纯文本后再根据自己的模板把它渲染成 HTML。这个过程很像程序员写 HTML 时把结构和样式分开内容始终是清晰的源码而最终长什么样由渲染端决定。这种设计第一个好处是稳定。不管你把它粘贴到哪个平台只要平台支持 Markdown排版就不会崩。第二个好处是可迁移同一个.md文件可以在本地编辑器、GitHub、博客后台来回倒不会出现富文本那种“换了系统后字体变、间距变”的问题。第三个好处是专注写的时候看到的是内容不是一堆字体按钮和缩进控制。很多刚开始用的人会担心全都是符号记不住怎么办实际上常用的符号不超过十个用得多了以后手指比脑子先记住了。1.3 它到底适合谁我觉得最典型的人群是博客写作者、内容运营、程序员、学生和知识管理爱好者。博客写作的场景尤其适合因为网络上的文章通常包含标题、段落、代码、表格、图片和引用Markdown 对这些元素的表达能力几乎刚刚好。它不是万能的如果你需要做一份带复杂封面、页眉页脚、公文字体的公文或者需要精细调整每段缩进和行距的印刷品Markdown 可能不是最佳选择。但绝大多数博客、笔记、文档场景Markdown 都是效率最高的方案。就拿“快速上手”这件事来说Markdown 的学习成本低到可以忽略你不需要去背命令也不需要理解正则表达式只需要把几个符号用对。真正的门槛往往在习惯上比如从“鼠标点击排版”切换到“键盘输入符号”的思维方式。但只要熬过第一篇文章后面就会越来越顺。下面我就从语法、编辑器、实战、排障四个角度把这套流程完整拆给你看。2. 快速上手Markdown 语法里最常用的几板斧2.1 标题、段落和换行最容易忽略的细节语法看起来简单但细节决定体验。先说标题在行首写 1 到 6 个井号#后面加一个空格再写字就是对应层级的标题一个井号是最大的一级标题六个井号是最小的六级标题。井号后面这个空格必须保留否则很多渲染器会把它当成普通文本。段落之间用空行分隔这一点很多人第一天就栽了你在编辑器里按回车换一行渲染出来可能和上一行挤在同一个段落里。Markdown 里的换行规则比较特殊普通换行只是软换行有些编辑器会把它忽略。我在后面的排障部分会专门讲这个问题但这里先给你一个最稳妥的写法每写一个段落段与段之间空一行而不是用单个回车硬分。这样无论复制到哪个平台段落结构都不会丢。标题和标题之间最好也保留空行避免某些解析器把连续的标题合并成奇怪的结构。2.2 加粗、斜体、链接、图片和引用块竖杠的正确理解加粗用一对**包住文字斜体用一对*包住文字。链接的格式是[文字](网址)图片是感叹号加方括号加圆括号很好记。注意方括号里的“替代文字”在图片加载失败时会出现也方便屏幕阅读器理解所以别偷懒不写。链接的“文字”部分不限长度你可以写得像一句说明阅读体验比直接甩一串网址好得多。引用块用行首的加一个空格实现。很多新手第一次在文档里看到一行的开头是竖杠符号以为是个装饰性的竖线其实不是那是大于号。比如你要引用一段名人名言写成 生活不是等待暴风雨过去而是学会在雨中跳舞。渲染出来就是一个带左边竖线背景的引用区块。你可以连续写多个来表示嵌套引用也可以在每个段落前面都加效果是同一个引用块。这个语法在博客里经常用来标注网友评论、公告和文章摘要非常实用。2.3 列表、表格和代码块博客高频场景列表分无序和有序两种。无序列表在行首写-、*或后面加空格有序列表直接写1.、2.。嵌套列表就在上一项的下一行前面加两个或四个空格再写下一层的标识符。这里有个容易踩的坑列表符号后面的空格不能省否则解析器会把它当成普通文本。有序列表的数字不一定要连续很多解析器会自动从 1 开始排所以你可以放心写。表格相对特殊它用竖线|分隔单元格第二行必须写分隔行比如| --- | --- |表示表头与内容的边界也可以在里面加冒号控制对齐方式。一个最简单的三列表格写出来是这样| 平台 | 支持表格 | 支持公式 | | --- | --- | --- | | 博客A | 是 | 否 | | 博客B | 是 | 是 | | 博客C | 否 | 是 |代码块以前用缩进现在更推荐用三个反引号包裹并在开始的反引号后面写上语言名称。比如下面这样python print(hello) 语言名称写对之后代码块会自动高亮博客的可读性会提升一大截。如果你不写语言名称也能渲染只是没有颜色区分对技术类文章来说体验会差一些。2.4 公式、任务列表和分隔线让笔记更顺手在 Markdown 中插入公式使用的是 LaTeX 语法。行内公式用$...$包住独立成块的公式用$$...$$。比如写$Emc^2$渲染后就是行内的 Emc²如果你有一个推导过程可以用块级公式单独放一行。Typora 和很多笔记软件默认支持公式渲染但博客平台就不一定了有些需要你在后台开启 MathJax 或 Katex 支持不开启的话公式会以源码形式暴露出来。任务列表也值得掌握。写法是- [ ] 待办事项表示未完成- [x] 已完成表示已完成。这个语法在写项目计划、学习清单时特别好用GitHub 风格的 Markdown 普遍支持。分隔线用单独一行写---或***但要注意前后必须留空行否则会被当成二级标题的语法。这些扩展语法不一定每个平台都支持你在本地排版是好的发到线上可能不渲染所以重要内容要提前测试。3. 编辑器选型与工作流搭建3.1 Typora把 Markdown 写成 Word 的桌面编辑器说到 Markdown 编辑器我第一个想推荐 Typora。它最大的特点是所见即所得左边没有额外的预览窗格你写出来的#、**会实时变成标题和加粗就像用 Word 一样顺滑。Typora 官方支持 Windows、macOS 和 Linux安装包在官网下载即可安装完成后会进入试用正式版需要付费授权偶尔写写文章可以先试用再决定要不要买。它是少有的把编辑体验做到接近零门槛的桌面软件尤其适合从富文本转过来的新手。下载安装流程并不复杂去官网下载对应系统的安装包一路下一步启动后在设置里把“图片插入时复制到当前目录并优先使用相对路径”打开这个习惯对写博客非常重要。Typora 的导出能力也很完整内置了 PDF、HTML、Word 等导出选项其中 Word 导出依赖 Pandoc所以建议额外安装 Pandoc。它有暗色主题、聚焦模式和打字机模式写作时沉浸感很强。不过它不开源代码高亮主题和导出 PDF 的样式需要自己调如果你需要更高的自定义程度可以看看下面这个免费组合。3.2 VS Code Markdown Preview Enhanced免费又强大的组合VS Code 本身是程序员写代码用的编辑器但装上 Markdown 插件后完全可以当作一个高颜值、免费、扩展性极强的 Markdown 编辑器。安装方式很简单官网下载 VS Code打开扩展商店搜索并安装Markdown Preview Enhanced再补一个Markdown All in One管语法提醒和目录。MPE 的好处是预览体验极好支持滚动同步、自定义 CSS、导出 PDF/HTML/Word、块级公式和一键生成目录。它默认导出 PDF 时可以选 Prince、Chromium、Pandoc 等多种方案我后面排障部分会详细讲 Prince 导出乱码的问题。如果你对“颜值”有要求MPE 支持通过 CSS 改动预览样式网上也有很多主题可以直接抄把预览窗口调成偏暖色的阅读模式。这个组合的导入导出都靠插件不用记住太多命令。如果你还在纠结两个方案怎么选我的建议很直接图省心选 Typora想要免费和可定制选 VS Code。两者在常用功能上差距不大主要差别在下面几点对比项TyporaVS Code MPE上手难度低中价格付费授权免费开源导出 PDF内置较省心需插件但方案多可定制性中高适合人群新手、快速记录程序员、长文作者3.3 在线编辑器与浏览器插件零安装快速体验如果手上没有安装任何软件在线编辑器是最快的上手方式。网上有不少支持 Markdown 的在线编辑器比如 StackEdit、Dillinger 等打开网页就能写支持实时预览也能导出文件。它们的优点在于零安装、跨平台适合临时改个 README、快速看别人发的 md 文件。缺点是有时网络影响体验数据也存在别人服务器上重要内容不建议长期存放。搜索引擎里搜“markdown 在线编辑器”还能找到很多偏颜值向的版本有的把源码区和预览区做成了左右分栏的双栏美学很适合当写作工具。浏览器插件也值得提一下特别是 Chrome 用户。如果你在 GitHub 或其他代码仓库里打开一个.md文件浏览器默认显示纯文本阅读体验很糟。安装类似Markdown Viewer或Markdown Preview Plus的 Chrome 插件后就能直接在网页里渲染 Markdown 文件查看 README 和本地 md 文件会舒服很多。搜索关键词“chrome 查看markdown插件”能找到一大把选下载量高的那类即可。插件的原理很简单就是帮你把 Markdown 用 JavaScript 转换成 HTML再在当前页面展示。3.4 Markdown 转 Word/PDF从手动复制到工作流自动化Markdown 写得再舒服最终发布时还是要面对一个现实问题博客后台可能不支持 Markdown或者需要交付一份 Word 文档。这时候就要靠导出工作流。最通用的工具是 Pandoc一条命令就能把 Markdown 转成 Wordpandoc input.md -o output.docx。如果你导出后图片丢失检查图片引用路径是否和源文件相对位置一致必要时加参数--resource-path.。转 PDF 可以用 Pandoc 配合 LaTeX或者直接在 Typora 里选导出 PDF后者对中文排版更省心不用自己折腾模板。现在还有一种思路是把转换过程放到自动化工作流里。比如社区里有人用 Coze 这类自动化平台搭“Markdown 转 Word”工作流你上传一个 md 文件流程自动解析标题、代码块和表格再生成结构化的 Word 文档还能批量处理一批文件。这种方式对重复性高的文档任务特别友好。但要注意自动化流程对格式的支持上限取决于你输入的 Markdown 是否规范如果你原文件里到处是手写空行和缩进出来的 Word 也会乱。所以即便有工具写作时保持语法整洁仍然很重要。我在本地最常用的组合是Typora 写初稿Pandoc 转 WordChrome 打印转 PDF。三者配合基本覆盖了个人博客到工作交付的所有场景。4. 博客写作的 Markdown 实战技巧4.1 动笔之前先画骨架用标题体系管理长文很多新手写长文一上来就从头写第一段结果写着写着结构就散了。我的习惯是先用标题把文章骨架搭出来把 H2 当成大章节每个 H2 下面先列三到五个 H3再在每个 H3 下补一两句话的思路提示然后才进入正式写作。Markdown 的标题体系特别适合这种“骨架先行”的写法Typora 左侧的文档大纲会自动把标题变成树状结构VS Code 的 MPE 也支持类似功能。有了骨架你的思路是先在页面上跑一遍的写进去的内容不容易跑题文章逻辑也更清楚。写完初稿后再回头检查标题层级。我踩过的坑是一个 H2 下面只有一个 H3或者标题编号乱跳导致目录结构像台阶断了层。后来我给自己定了个规矩除非是短随笔否则每个 H2 下至少展开两三个 H3不然就并入上一级。标题本身就是文章的导航一个好的标题体系不仅是给读者看的也是给你自己梳理逻辑用的。很多人觉得 Markdown 只是排版工具但在我看来它的标题语法是一种高效的写作管理方式。4.2 图片管理相对路径才是王道图片管理是博客写作里最容易翻车的环节。我见过不少文章在本地用绝对路径C:/Users/xxx/图片/1.png插入图片发布到服务器后全部裂图。正确做法是把所有图片放在和 .md 文件同级的images目录下引用时写这种相对路径。这样的好处是整个文件夹拷到另一台电脑甚至打包发给别人图片都不会丢。Typora 在设置里可以选择“优先使用相对路径”插入图片时自动复制一份到指定目录。VS Code 里则推荐使用Paste Image插件截图后自动生成图片文件并插入相对路径。还有一点图片文件名尽量用英文和数字不要带空格和中文因为某些博客后台对 URL 编码处理得不好容易导致图片加载失败。如果你习惯用图床需要注意图床的稳定性问题尤其是免费图床图片可能在某一天突然失效。重要文章我仍然建议本地留一份原图。4.3 表格复制与格式保持Excel 到 Markdown 的坑表格是 Markdown 里最不直观的语法但博客写作经常会用到。热词搜索里都有“markdown表格复制”说明很多人卡在这一步。如果你在 Excel 或 WPS 里做好表格想转成 Markdown最快的办法是直接复制单元格然后在 Typora 里粘贴Typora 会自动把它转成 Markdown 表格。但在 VS Code 里粘贴就只会得到普通文本需要用在线工具 Table Convert或者装一个 Excel-to-Markdown 之类的复制插件。格式上最容易错的地方是第二行的分隔线每一列之间必须有---否则表格不渲染。单元格内容不能有多余的换行如果需要换行可以塞 HTML 的br。还有一个和平台相关的坑Markdown 表格复制到微信公众号后台这类富文本编辑器时基本都会失效。我的处理方法是先在本地预览成 HTML再把渲染后的表格整体复制过去或者用 Markdown Here 这类工具一键转换。总之只要平台不吃 Markdown你就要用“转成富文本再粘贴”的思路。4.4 长文档维护目录、锚点与全局替换长文档维护主要靠目录、锚点和全局替换。Typora 中直接写[TOC]会自动生成目录这个目录在导出 PDF 时会变成可点击的书签非常方便。博客平台通常不支持[TOC]但你可以在后台生成目录或者用锚点链接手动做。锚点的本质是 HTML 的id属性比如## 4.4 长文档维护可以用[跳到4.4](#44-长文档维护)这种方式跳转前提是平台保留标题的 id。这个规则不同平台有差异需要测试。全局替换是日常修文利器。VS Code 里按CtrlF可以搜索按CtrlH可以替换。比如文章里引用的图片目录从assets改成了images不用一张张改直接全局替换assets/为images/。替换时要注意勾选“全字匹配”或“区分大小写”避免把正文里的同名文字一起改了。我还会定期把整篇文章CtrlA全选在源码里检查有没有多余的空格、凌乱的缩进和不闭合的引用块。Markdown 没有一个统一的标准各平台的解析器也有差异所以写完后用纯文本视角看一遍源码往往是发现问题最快的途径。5. 常见问题与排障速查5.1 Markdown Preview Enhanced 用 Prince 导出 PDF 乱码怎么办Markdown Preview Enhanced 的用户在导出 PDF 时如果选择 Prince 方案最容易遇到中文乱码。原因基本出在字体上Prince 默认使用的字体不包含中文字形或者系统缺少合适的中文字体。解决办法分两步。第一步确认系统安装了中文字体Windows 上一般有微软雅黑Linux 上可以装 Noto Sans CJK SC第二步在 VS Code 里打开设置找到 MPE 的 Preview 相关配置加入自定义 CSS在正文中指定中文字体比如body { font-family: Noto Sans CJK SC, Microsoft YaHei, sans-serif; }设置完成后重新生成 PDF一般乱码就能解决。如果还乱检查你是不是把文件名写成了中文某些导出方案对非 ASCII 文件名处理不稳定建议把输出文件名改成my-post.pdf再试。另外一个隐藏坑是Prince 方案对复杂的 CSS 支持有限图片位置、表格宽度可能和你预览时不一样。如果你对最终 PDF 的格式要求高我更推荐直接用 Chrome 的打印功能导出 PDF那个效果最接近所见即所得。5.2 换行不生效、表格不渲染、公式显示异常换行不生效是热门问题。很多人在 Markdown 里按了一次回车渲染后却还是同一行。这是因为部分解析器要求行尾加两个空格也就是硬换行或者用\反斜杠结尾。最保险的换行是段落之间留一个空行这样会得到真正的段落分隔。第二个常见问题是表格不渲染多半是第二行分隔线写错了比如写成了| -- | -- |少了冒号和横杠、列数对不上。第三个常见问题是公式显示异常行内公式$...$的美元符号和内容之间不能有空格块级公式$$...$$必须独占一行有些博客平台默认关闭数学公式需要手动开启。第四个问题是代码块不换行记得在三个反引号后面写语言名称比如python没写语言也能渲染但不高亮。这些坑都不是语法复杂而是细节。为了避免挨个踩一遍我建议你把常用的语法复制到一个语法测试.md里写完就压到不同平台测试形成自己的排障清单。5.3 如何把 Word 和 PDF 快速转换成 MarkdownWord 和 PDF 转 Markdown需求和场景经常出现。先说 Word 转 Markdown首选 Pandoc命令是pandoc input.docx -t markdown -o output.md。它能保留标题、加粗、列表、简单表格但复杂分栏、文本框、亮色批注这些会丢失或变成难以阅读的 HTML 代码。转换完之后必须打开文件检查一遍尤其是表格对齐和图片路径。至于 PDF 转 Markdown情况要复杂得多PDF 本身是给阅读印刷用的没有保留结构信息所以转换前你要清楚是文本型 PDF 还是扫描件。文本型 PDF 可以用在线转换工具先导出为 HTML 或 Word再转成 Markdown扫描件则需要 OCR公式多的话还得用专门的公式识别工具。我的经验是PDF 转 Markdown 只能作为“抢救素材”的手段别指望 100% 还原。如果后续要长期维护这篇文章建议在初始阶段就保留 Markdown 源文件PDF 只是导出产物。实际下来的转换流程往往是“工具转换一次手动修半天”所以如果你有选择权尽量维护源文件而不是逆向往回转。5.4 新手避坑清单最后给新手一张避坑清单都是我见过的高频错误标题#后面不加空格导致标题不生效。井号后面那一个空格是你最应该记住的细节。中英文标点混用比如把**加粗**写成**加粗**其中一个星号变成全角渲染后就是普通文字。列表符号后面的空格忘写解析器把整段当成普通文本。-和文字之间必须有空格。表格第二行漏写表格直接失效。分隔行虽然看起来多余但它就是表格的“身份证明”。代码块只有开头三个反引号没有结尾导致后面所有内容都变成代码。建议写完代码块立刻补结尾。图片用了绝对路径换设备就裂图。务必统一使用相对路径。一个段落里的软换行没有处理发布后挤成一行。段落之间用空行段内如果非要换行记得行尾加两个空格。从富文本编辑器复制内容到 Markdown带着一堆 HTML 标签和样式属性导致阅读困难。建议先粘贴为纯文本再调整。遇到这些问题不用慌回到源码里看符号是否成对、空格是否存在90% 都能解决。Markdown 不复杂真正需要养成的是写完以后下意识地检查一遍源码。在我自己的实践里有几个习惯一直坚持第一草稿一律先在本地用 Markdown 写内容稳定后再发布到博客后台不拿线上编辑器当草稿箱第二图片文件和 md 文件走同一个目录统一用相对路径换电脑、换域名都不慌第三每次写完长文都会把源码从头到尾扫一遍重点看标题层级、表格分隔线、代码块闭合和引用块的缩进第四重要文档会丢进 Git 仓库做版本管理改错还能回滚。这些习惯看起来不起眼但它们让我的写作流程很少被排版打断。Markdown 不是一个需要“学会”的高深工具它是一个上手后就不再想回头的写作环境。所以如果你问我要不要学我的回答永远是找一篇文章用它写一遍感受一下再说。