说实话见到Markdown学习这四个字我一开始是有点犹豫的。这东西被说得太多了有手就行几乎是它的标配评价。但真等自己动手写长文档、插图、贴表格、在不同平台间搬运的时候才发现到处都是坑。网上搜markdown换行markdown图片路径的人一大把说明大家不是不会写是总在某些细节上翻车。这篇文章我想换个思路不按教科书那种什么是Markdown、语法列表、练习题的老套路来而是沿着一个新手从零上手、再到进阶折腾的真实路径走。从编辑器怎么选、文件打不开怎么办这种最基础的问题一路聊到表格转Excel、数学公式、流程图、GitHub Callout甚至用自动化流程把网页存成Markdown、把Markdown转成Word。我不想写成一个语法手册更想写成一份我自己踩过坑之后整理出来的实操笔记让你能照着一步步把Markdown真正用起来。1. 先搞清楚你学的Markdown到底是哪个Markdown1.1 Markdown不是软件是一套用纯文本表达排版的约定很多人第一次听到Markdown以为是某个APP或者编辑器其实不是。它本质上是一套约定你只用普通的字符——#、*、-、、|这些——来告诉电脑这里是标题、这里是列表、这里是引用。真正的排版渲染是另一套工具在显示时完成的。这套约定的核心好处在于文件本身是纯文本。你用记事本打开一个.md文件看到的是干干净净的内容没有一堆隐藏格式符把它丢进Git里diff对比起来一目了然从一个软件搬到另一个软件内容不会像Word那样莫名其妙乱掉。理解这一点对你后面学习非常有帮助你写的Markdown文本永远只有一个版本但不同软件渲染出的效果可能完全不同。这不是你写错了而是各家实现方式有差异。最常见的分水岭是CommonMark和GitHub Flavored MarkdownGFM。CommonMark算是一个基础规范力求统一各平台的基本语法GitHub在它之上加了一堆扩展比如表格、删除线、任务列表、自动URL识别再加上近两年很火的Callout提示框语法。所以你在一款笔记软件里写好的文档贴到GitHub上可能显示效果就不一样原因就在这里。1.2 给自己定位你是写博客、写文档还是记笔记动手之前先想清楚使用场景因为场景决定了你要重点学哪些语法也决定了工具选型。写技术博客/README重点要学代码块、行内代码、链接、图片相对路径、表格、任务列表、Callout。发布平台通常是GitHub、博客平台或静态站点工具。写学习笔记重点可能是标题层级、引述、高亮、待办事项、双链如果你用Obsidian这类工具、以及把网页内容剪藏成Markdown的习惯。写带公式的文档论文、数学笔记必须搞定数学公式插件和$、$$的用法。写流程图/架构图要学Mermaid这类基于文本的画图语法而不是去画图软件里拖框连线。我见过不少新手一上来就想着把所有语法全背下来结果学完就忘因为很多语法根本用不上。更合理的方式是先掌握标题、粗体、斜体、列表、引用、链接、图片、代码、表格这10个基础项就已经能覆盖80%的日常写作。后面的高级语法用到再查查多了自然就熟了。2. 准备阶段的坑编辑器怎么选、.md文件怎么打开、装了软件却不显示2.1 编辑器选型先给一份阶梯式清单不要一上来就搜markdown编辑器下载然后装一个回来发现不好用又换下一个。我按使用场景帮你把主流选择理一下照着挑就行。工具平台特点适合人群TyporaWin/macOS/Linux所见即所得输入即渲染追求写作沉浸感的用户目前收费ObsidianWin/macOS/Linux/移动端免费本地存储支持双链和插件笔记重度用户、知识管理爱好者VS Code 插件多平台通用代码编辑器Markdown只是其功能之一程序员、写技术文档的人Sublime Text 插件多平台轻量、快但需要自己配插件习惯Sublime的老用户StackEdit / Dillinger浏览器免安装在线编辑临时用一下、不想装软件的人Notion/语雀/飞书多平台类Markdown体验但语法不完全兼容团队协作、企业文档场景我个人最常用的组合是Obsidian记笔记 VS Code写技术文档。Obsidian最大的价值是本地纯文本存储和双链也就是[[笔记名]]这种写法笔记之间能互相跳转适合长期积累。VS Code则是插件生态恐怖写代码的人本来就用它顺便把Markdown也写了不用额外开一个软件。2.2 .md文件怎么打开说穿了它就是一个文本文件这个热搜词背后是大量刚接触Markdown的人共同的困惑下载了一个README.md双击却弹出一堆乱码或者直接选择了错误的应用。请你记住一个底层事实.md文件本质就是.txt文件没有任何特殊编码。所以打开这件事最兜底的方法是用系统自带的文本编辑器Windows右键 → 打开方式 → 记事本。macOS右键 → 打开方式 → 文本编辑TextEdit。打开后你能看到纯文本内容只是没有高亮和渲染。想要漂亮的渲染效果就让专门软件接管.md文件的关联。比如Windows下装了Typora或Obsidian之后右键.md文件选择打开方式再勾选始终使用此应用打开 .md 文件即可。macOS同理在显示简介里可以修改默认打开方式。这里有个很重要的提醒去官网下载不要用第三方软件站里的高速下载。搜索markdown下载时经常能碰上一堆打包了全家桶、捆绑软件的下载站真正从官网下载反而干净。Typora官网直接下载试用版就能用但正式使用需要付费授权Obsidian完全免费且支持中文界面VS Code则本来就是免费软件。2.3 装好了却没有渲染效果检查这几处很多人装完编辑器后打开.md文件发现就是白底黑字以为软件坏了。实际多半是下面几种情况Typora界面上有四个模式——源码模式、大纲模式、打字机模式、专注模式。如果你切到了源码模式当然看不到渲染效果。按Ctrl/macOS是Command/可以切换回实时渲染模式。VS Code默认打开文件只是文本视图需要按CtrlShiftV调出预览面板或者CtrlK V在侧边开实时预览。推荐装一个叫Markdown All in One的插件它能补齐目录生成、表格格式化、快捷键等功能。Sublime Text本身也不带Markdown渲染需要装MarkdownPreview插件。装完后用CtrlShiftP打开命令面板输入Markdown Preview就能在浏览器里预览。别指望Sublime开箱即用它的定位是轻量编辑器一切靠配。小技巧如果你只是想快速在命令行里瞄一眼Markdown渲染效果可以用glow这个开源工具在终端里直接渲染.md文件非常轻量。3. 基础语法里最坑的细节换行、图片路径、代码块3.1 换行规则为什么你写的回车经常不管用markdown换行这个热搜词能排那么靠前我一点不意外因为这是几乎每个新手都会遇到的问题。你在Markdown里按一下回车渲染结果里往往并不是一个新起一行而是变成了一个空格前后文本挤在同一行。原因很简单Markdown继承了早期电子邮件纯文本写作的习惯在设计上单行回车被当作这一个逻辑段落还没写完。想让渲染结果里出现换行有几种办法行尾打两个空格再回车——这是Markdown最初的规范写法算软换行。用HTML标签br——这是最直白、最显眼的强制换行也兼容性最好。空一行另起段落——两个段落之间留一个空行渲染时会形成段落间距这也是写长文档时最常用的方式。这里有个容易踩的坑在Typora这类所见即所得编辑器里你可能直接按了回车看到显示就是换行就以为学会了。但把这个文件丢到GitHub或者别的平台上效果就变了——因为GFM规则下单换行会被自动当作br处理而CommonMark规则下则不会。所以同一份文档在本地预览好端端的传到某些平台就挤成了一坨这个差异你迟早会遇到。我的习惯是在纯Markdown文本里段落之间一律用空行分隔需要强制换行时就用br一是不容易忘二是跨平台显示更可控。别依赖行尾两个空格这个写法因为它肉眼几乎看不见你自己过几天再看都不知道那里有没有空格。3.2 图片路径相对路径、绝对路径、还是网络URLMarkdown插图看起来很简单就是![](路径)但markdown图片路径能上热搜说明问题一点都不简单。你写的路径主要有三种类型网络URL![](https://example.com/image.png)图片放在线上文档传到任何地方都能显示但依赖网络而且图床失效就全挂。相对路径![](./images/logo.png)图片放在本地文档的相对目录下最推荐使用因为文档和图片一起移动时相对关系保持住就不会断。绝对路径![](/Users/name/Pictures/logo.png)或者C:\Users\...这种路径换一台电脑基本就废了除非你只在固定设备上用。关于相对路径我最想强调的是目录规范。我从一开始就建议你把所有图片收进一个固定文件夹比如和文档同一级的assets或images目录。很多编辑器都内置了这个功能——拿Typora来说在设置里有一个图片选项可以勾选复制图片到 ./assets 文件夹这样你往文档里粘贴任何截图它都会自动存进assets目录并把路径自动写成相对路径。这里我要分享一个真实教训我刚用Markdown的前几个月图片是随手放的和文档混在一个文件夹里。后来文档多了图片散得到处都是我不得不写了个脚本去整合非常痛苦。如果你一开始就养成一个文档对应一个assets目录的习惯后面整理会省掉大量时间。另外一个小技巧想控制插入图片的显示宽度Markdown语法本身做不了但可以混用HTMLimg src./assets/demo.png width400 /几乎所有渲染器都能识别这在写带截图的教程时非常实用。3.3 插入代码代码块、行内代码、以及反引号的三重嵌套问题代码是技术文档里最核心的内容markdown 插入code这个需求概括起来就是两种行内代码用单个反引号包裹比如print(hello)渲染出来是一小段等宽字体。代码块用三个反引号包裹并且在开头注明语言比如python print(hello) 第一行三个反引号之后跟的语言名很关键它决定了代码高亮的语法规则。常见的标注有python、javascript、bash、json、sql等不同渲染器认识的名称略有差异但主流的名字基本都支持。我知道一定会有人遇到这个情况想在代码块里展示含有三个反引号的代码比如写一篇教别人用Markdown的笔记。很多新手会直接把写进代码块里结果发现代码块提前结束了后面的内容全乱了。解决办法是使用超过代码内容中反引号数量的包裹符号。比如你想在代码块里展示python那就用四个反引号包裹整个代码块markdown python print(hello) 这样反引号只是个数多少的问题不会产生冲突。类似的还有波浪线~~~也能创建代码块但用的场景少一些。最后提醒一句从IDE或网页里整段拷贝代码时经常把行号、多余空行一起粘进来。粘贴后记得检查代码块内部格式——尤其是在Markdown里缩进如果混用了Tab和空格在某些渲染器里会变得对不齐。干净、有语言标注、有良好缩进的代码块才是专业文档该有的样子。4. 表格、数学公式与流程图进阶排版的三板斧4.1 表格语法拆解为什么表格写出来总是歪的Markdown表格是GFM扩展语法冒号、短横线、竖线组合起来。它的基本格式是三行起跳| 姓名 | 年龄 | 城市 | | --- | --- | --- | | 张三 | 25 | 上海 | | 李四 | 30 | 北京 |其中第二行的|---|是必须存在的分隔行少了它整个表格就渲染不出来。分隔行里的短横线数量至少一个但为了对齐美观通常写两三个以上。分隔行里的冒号还控制对齐方式:---左对齐:---:居中---:右对齐表格里面有一个限制需要你记住单元格内不能直接放多段落内容也不能直接写列表。想换行的话可以用br想放列表的话你得换用HTML表格或者接受一个单元格一行文字的简单形式。关于表格的几个实操问题我专门说一下表格复制到Excel。如果是把网页或编辑器里渲染好的表格复制到Excel最快的方式是直接选中表格区域复制到Excel里粘贴时可以选文本导入或使用分列。而如果你手里只有一段Markdown表格源码可以直接把它复制成TSVTab分隔值格式再粘贴姓名 年龄 城市 张三 25 上海 李四 30 北京Excel能把Tab分割的数据自动识别成列。反过来Excel表格转成Markdown表格可以借助在线工具或者在Typora里直接把Excel表格复制粘贴进去Typora会自动转换成Markdown表格源码。两个方向都有快捷路径核心思路是Markdown表格和电子表格之间通过Tab/竖线做过渡。如果你经常和表格打交道还应该了解Pandoc这个命令行工具。它能把Markdown表格非常规范地转成CSV、Excel可读的格式也能从Excel导出的CSV生成Markdown表格。虽然命令行看起来不够图形化但批量处理时效率极高这个放到下一章详细说。4.2 数学公式从行内符号到块级公式写技术文章、算法笔记或论文草稿时数学公式是刚需。Markdown本身没有公式能力但大部分主流编辑器都接入了MathJax或KaTeX让Markdown文档可以内嵌LaTeX公式。你只需要在编辑器设置里打开数学/公式开关。用法分为两种行内公式用单个美元符号包裹比如$Emc^2$渲染后公式嵌在文字行里。块级公式用双美元符号包裹独占一行并居中比如$$ \frac{a}{b} \sqrt{x^2 y^2} \sum_{i1}^{n} i $$基础的LaTeX语法包括上标^、下标_、分数\frac{}{}、根号\sqrt{}、求和\sum_{}^{}、希腊字母\alpha \beta \theta等。你真正常用的其实也就二十来个符号不用背很多。插件层面不同编辑器方案不一样Typora设置 → Markdown扩展语法 → 勾选数学公式开了就能直接写。VS Code装MarkdownMath插件或者在Markdown All in One基础上配合MathJax相关扩展。Obsidian默认支持如果预览不显示去设置里开启LaTeX渲染。遇到过的最常见问题是美元符号和中文文本之间没有空格导致公式不显示。比如价格是$5这种渲染器会误以为你想写行内公式然后匹配不到结束的$整个页面都乱掉。解决办法是公式的$和文字之间加空格或者把货币金额这种场景写成5美元这种不带符号的表达。4.3 流程图不是画出来的Mermaid语法与转换思路有道云markdown转流程图这种搜法其实暴露了一个普遍的误解。大家以为Markdown里有个按钮点了就能生成流程图实际上在Markdown里画流程图靠的是Mermaid这种用文本描述图形的语言。基本结构非常直观graph TD A[开始] -- B{条件判断} B --|是| C[执行] B --|否| D[结束]TD表示top-down从上到下布局LR表示left-right从左到右。节点可以是方括号矩形、花括号菱形、圆括号圆角矩形箭头用--连线上的文字用--|文字|。画时序图、甘特图也都有对应语法。Typora、Obsidian、GitHub、VS Code的预览插件以及很多在线Markdown编辑器都支持Mermaid渲染。在有道云笔记里新建Markdown笔记后把Mermaid代码放进代码块并指定语言为mermaid它就会渲染成图。至于转换这件事我的经验是流程的源文件是Mermaid代码而不是渲染出来的图片。想要把Mermaid转成Visio或Draw.io能编辑的格式可以用一些专门的转换工具社区里有人做了mermaid转drawio的脚本或者干脆在Draw.io里直接粘贴Mermaid代码新版Draw.io支持从文本创建图形。如果只是想把渲染好的图保存下来直接对预览区域截图或者导出成PNG就完事。凡是Markdown转流程图的需求你脑子里应该先把这句话翻译成我需要学习怎么用Mermaid写流程图。5. 进阶玩法Callout、Markdown转Word、以及让Agent帮你存网页5.1 GitHub Callout给文档加一眼就能识别的提示框Callout是GitHub在2023年更新的一个GFM扩展语法用起来像引用块但带了一个提示框样式特别适合给README和文档里的注意事项、重要信息做标注。写法是以开头用[!类型]标明提示级别。目前支持五种类型类型含义适用场景[!NOTE]普通提示补充说明、背景信息[!TIP]技巧建议推荐做法、省力技巧[!IMPORTANT]重要信息必须注意的关键内容[!WARNING]警告可能导致错误的操作[!CAUTION]小心可能造成严重后果的风险实际写起来是这样 [!WARNING] 这里不要使用绝对路径否则换设备后图片会全部失效。渲染出来的效果是一块带颜色和图标的高亮区域比干巴巴的文字醒目很多。这里有个兼容性提醒Callout目前主要在GitHub上有效Typora原生不支持但我记得老版本可以通过插件模拟Admonition效果的语法Obsidian则需要装Admonition插件。所以你写README发到GitHub时可以放心用Callout写本地笔记用Obsidian时记得装对应的插件否则它只能显示为普通引用块。5.2 Markdown转Word一条一条命令搞定也可以做成Coze工作流markdown转word工作流coze这个热搜词很有代表性说明现在很多人已经不满足于本地转换而是想把这个过程自动化、流程化。先讲本地最靠谱的方案——Pandoc。它是文档格式转换领域事实上的标准工具一条命令就能把Markdown转成Wordpandoc input.md -o output.docx默认不带任何参数转换出来的docx样式会比较朴素但结构标题、段落、表格、代码块是完整的。如果你想带参考文献、自定义样式可以加--reference-doc样式模板.docx参数。这个参数的做法是先用Word生成一个你满意的样式文件Pandoc按照这个样式输出。我一般会这么干pandoc input.md -o output.docx --reference-docmy-style.docxPandoc还支持PDF、HTML、epub、LaTeX等几乎所有你能想到的格式。会了它你就再也不用担心导出Word乱排版这种问题了。再说Coze工作流。如果你经常有收到一篇Markdown笔记自动转成Word发给别人这种重复操作完全可以在Coze里搭一个自动化流程。思路大概是接收Markdown文件/文本 → 用节点调用Pandoc或文档转换服务 → 输出Word文件 → 存到目标位置。在Coze这类工作流平台里你可以把谁上传Markdown文章作为触发节点后面跟上文本处理节点和文件生成节点最后推到云盘或消息推送。这一步其实并不复杂核心就是把你在终端里手动敲的那条Pandoc命令封装到一个自动化流程里。我自己习惯的做法是先本地把Pandoc命令跑通确认转换效果再去工作流平台上搭自动化这样调试成本最低。5.3 让Agent把网页保存成Markdown阅读、剪藏、整理的自动化链路这个场景现在非常火。你看到一篇不错的网页文章想把它变成Markdown存进自己的笔记库最原始的做法是复制粘贴再手动清理格式。但现在的工具完全可以做到一键保存。基本链路分三块提取正文。浏览器插件或者爬虫工具会先用类似Readability的算法把网页正文从导航、广告、侧边栏这些噪音中抽取出来。这一步的质量决定整个转换的上限。转换为Markdown结构。正文拿到后再把标题层级h1/h2/h3、图片、列表、代码块转成对应的Markdown语法。现在不少AI助手或Agent技能就是干这个的给它一个网页URL它读出正文并按照规范排版输出.md文件。本地整理与归档。保存时建议保留原始URL、保存时间、作者信息这些元数据对你后续回顾和溯源非常重要。关于实操工具我比较常用的是浏览器插件方案比如MarkDownload这类扩展点击按钮就能把当前页面转成Markdown下载。命令行派可以试试一些开源工具它们能批量处理一批URL。各类社区里还有不少开发者把自己写的转换脚本做成了网页转markdown Skill专门供智能体调用让AI根据指令抓取、整理网页并输出结构化Markdown本质上就是读取网页 → 解析 → 生成md这套动作的封装。这里有一个很关键的习惯建议保存网页为Markdown之后不要直接丢进笔记库。我一般会先过一遍检查图片是否下载到本地、代码块是否完整、表格是否被正确转换。网页里很多内容是看起来像表格实际是div排版转换后可能会变成一堆混乱的文本这个只能靠人工微调。自动化工具负责效率但最终的质量还是要靠你扫一眼。学到这里你对Markdown的认识应该已经远超会写标题和加粗的阶段了。我最后想分享的一个实际经验是Markdown学到后面真正值钱的不是你背下了多少语法而是你养成了多大程度依赖纯文本的写作习惯。我现在写文章、记笔记、写任务清单甚至发一些长消息都下意识用Markdown的结构去组织。如果你也想像我一样把它变成肌肉记忆我推荐一个笨但有用的方法在编辑器里把最常用的几段格式——表格模板、代码块模板、Callout模板、图片引用模板——都存成代码片段snippet设定好快捷键。这样你在写作时永远不用从零敲语法顺便也就把规范刻进了日常操作里。工具顺手了Markdown就不再是要学的东西而是你表达的一部分。