Jason

Markdown保姆级教程 | 通吃Notion、Obsidian、Typora、AI提示词,AI时代的必备技能。

下载文件

Markdown是一种轻量级标记语言,由约翰·格鲁伯(John Gruber)与亚伦·斯沃茨(Aaron Swartz)于2004年共同创造。其核心设计哲学是“易读易写”,即便是未被渲染的纯文本格式,也应具备极高的可读性。

它并非HTML的替代品,而是一种更易于编写的“HTML预处理器”。Markdown文档最终会被解析器转换为HTML,因此它天然兼容HTML,允许在文档中直接插入HTML代码以实现更复杂的格式。

核心优势

  • 专注内容: 将内容与格式分离,让创作者专注于写作本身,而非频繁操作排版工具。
  • 平台无关: 文件为纯文本(.md),具有极强的可移植性,内容可以被任何文本编辑器打开,易于长期保存和迁移。
  • 学习成本低: 核心语法简洁,易于快速上手并长期受益。
  • 应用广泛: 已成为技术写作、在线内容创作和知识管理领域事实上的标准之一。

Markdown语法

关于Markdown的具体语法规则,请见:[[Markdown语法]]

Markdown的应用场景

  1. 知识管理与笔记
    • 应用: 构建个人知识库,撰写学习笔记、会议纪要、项目文档等。
    • 软件: [[Obsidian]], [[Notion]], [[Joplin]], Bear等主流知识管理软件都以Markdown为核心或提供良好支持。其结构化的特性(标题、列表)和链接语法是构建网状知识的基础。
  2. 内容创作与发布
    • 应用: 撰写博客、微信公众号文章、产品说明书、书籍或论文初稿。
    • 工作流: 实现“一次编写,多处发布”。例如,使用特定工具(如mdnice)可将Markdown内容带样式复制到微信公众号。通过[[Pandoc]]可将.md文件转换为格式规范的PDF或Word文档。
  3. 与AI高效协作
    • [[提示词|AI提示词(Prompt)]]: 在向[[AI]]下达复杂指令时,使用Markdown的标题、列表和代码块可以清晰地组织指令结构(如背景、任务、要求、示例),[[AI]]能更准确地理解意图。
    • AI的输出: 大多数[[大语言模型]]的默认输出格式即为Markdown。当要求[[AI]]生成表格、代码或结构化报告时,它返回的就是Markdown源码,这证明了其作为信息结构载体的通用性。

相关工具

编辑器 (Editors)

  • 跨平台/桌面端:
    • [[Typora]]: 经典的所见即所得(WYSIWYG)编辑器,体验流畅。
    • MarkText: 开源的类Typora编辑器。
    • Zettlr: 面向学者和研究人员的Markdown编辑器,注重引文和知识管理。
  • 特定平台:
    • Ulysses: (macOS/iOS) 强大的写作应用,提供库管理和发布功能。
    • iA Writer: (macOS/iOS/Windows) 专注、无干扰的写作体验。
  • 在线编辑器:
    • StackEdit: 功能全面的在线编辑器,支持云同步。
    • Dillinger: 简洁高效的在线Markdown编辑器。
    • HackMD: 支持实时协作的Markdown笔记和文档工具。

格式转换与处理

  • [[Pandoc]]: 被誉为格式转换的“瑞士军刀”。一个强大的命令行工具,可以在数十种文档格式之间自由转换,如 Markdown -> PDF/Word/HTML/EPUB/PPTX 等。
  • mdnice: 微信公众号排版工具,可将Markdown内容转换为精美的、带CSS样式的文章,以便粘贴到公众号后台。
  • CloudConvert: 提供Markdown格式转换的在线服务网站。

专业化与特定用途工具

  • 演示文稿 (Presentations):
    • Marp: VS Code插件或独立应用,用Markdown语法直接编写幻灯片。
    • Remark.js: 一个JavaScript库,可在浏览器中渲染Markdown格式的幻灯片。
  • 图表与绘图 (Diagrams):
    • Mermaid.js: 使用文本和代码创建图表和流程图。许多Markdown编辑器(包括Obsidian)已原生支持Mermaid语法。
    • PlantUML: 另一款通过文本描述生成UML图表的工具。
  • 笔记与复习 (Notes & Flashcards):
    • md2card: 将Markdown笔记(特别是问答格式)一键转换为Anki记忆卡片的工具,打通了学习笔记到主动复习的链路。
  • 静态网站生成器 (Static Site Generators):
    • Hugo, Jekyll, Hexo, VuePress: 许多个人博客和项目文档网站都基于此类工具构建,它们的核心就是将Markdown文件转换为完整的静态网站。

语法速查表

功能 (Feature)Markdown 语法 (Syntax)效果预览 (Result)
一级标题# 标题内容最大的标题
二级标题## 标题内容
三级标题### 标题内容(依此类推,可到六级)
---------
加粗**需要加粗的文字**需要加粗的文字
斜体*需要倾斜的文字*需要倾斜的文字
加粗并斜体***又粗又斜的文字***又粗又斜的文字
删除线~~被删除的文字~~被删除的文字
---------
无序列表- 列表项* 列表项• 列表项
有序列表1. 列表项一
2. 列表项二
1. 列表项一
2. 列表项二
任务列表(待办)- [ ] 未完成的任务
- [x] 已完成的任务
☐ 未完成的任务
☑ 已完成的任务
---------
> 引用> 这是一段引用的文字> 这是一段引用的文字
行内代码`code`用于突出显示单个变量或命令
代码块```python `<br>`print("Hello, World!")`<br>` ```用于显示多行代码片段
---------
链接[链接显示的文字](https://obsidian.md)链接显示的文字
图片![图片的替代文字](图片链接或路径)(在笔记中会直接显示图片)
水平分割线---***一条横跨整个页面的线

[!note]+ 标题

注意:所有符号都是英文输入法下的符号
井号加空格,几个井号就是几级标题,一级标题字体最大。
# 一级标题
## 二级标题

标题 1

标题 2

标题 3

标题 4

标题 5
标题 6

[!note]+ 文本

注意:所有符号都是英文输入法下的符号
两个星号是加粗:**我是加粗字体**
一个型号是斜体:*我是斜体*
三个星号,或者三个下划线是粗斜体:***我是粗斜体***,___我是粗斜体___
两个等号是高亮:==我是高亮==
两个波浪线是删除:~~我是删除~~

文本

普通文本

段落粗体文本

段落斜体文本

==高亮==

删除

粗斜体 粗斜体 删除


[!note]+ 列表

注意:所有符号都是英文输入法下的符号
无序列表:减号/加号/星号 + 空格,三个符号哪个都可以,但是建议用减号。 - 列表项1
有序列表:数字+点+空格:1. 列表项
输入完一个列表项后,打回车可以继续下一个列表项
列表嵌套:使用tab可以让列表缩进,使用shift+tab可以取消缩进。

任务列表:方括号里面一个空格或者叉,空格代表未完成,叉代表已完成。
[x] 任务 1
[ ] 任务 2
Task插件可以使已完成的任务后面自动显示完成时间。

任务列表并非原始的、John Gruber 定义的 Markdown 标准语法。然而,它已经成为一种被广泛接受和支持的 Markdown 扩展语法,许多现代的 Markdown 编辑器和笔记应用也都采纳了这种任务列表语法,因为它非常直观和实用。

列表

无序列表

  • 列表项 1
  • 列表项 2
    • 列表项 2.1
    • 列表项 2.2
  • 列表项 3

有序列表

  1. 列表项 a
  2. 列表项 b
    1. 列表项 b1
    2. 列表项 b2
  3. 列表项 c

任务列表

  • 任务 1
  • 任务 2
    • 嵌套任务 2.1
    • 嵌套任务 2.2
  • 任务 3

段落

[!note]+ 段落

注意:所有符号都是英文输入法下的符号
引用:大于号+空格:> 我是引用
嵌套引用:多个大于号,每多一个大于号,代表深一层嵌套
分割线:三个减号然后回车:---
强制换行 (Soft Break / Line Break):在同一段落内强制开始一个新行,而不是开始一个新段落。使用方法:在一行的末尾输入两个或更多的空格,然后按回车键。
备选方法:(如果 Markdown 解析器支持 HTML):直接使用 HTML 的 <br> 标签。

引用语法:

引用了一段名人名言

嵌套引用

俄罗斯套娃

强制换行:

这是第一行文字(假设末尾有两个空格)   
第二行

分割线:


[!note]+ 链接

注意:所有符号都是英文输入法下的符号
[普通链接](https://www.bing.com/)
[普通链接带标题](https://www.bing.com/ "普通链接带标题")
直接链接:<https://github.com>
锚点链接:1. 在文稿起草阶段,还没确定具体网址,但可以先给出网址标题。2. 同一篇文章需要重复出现同一个网址时.
使用方法:[网址标题][网址名]
然后在其他地方(一般是文章最后)给出网址名的地址:[网址名]:https://www.bing.com/
[锚点链接][anchor-id]
[anchor-id]: http://www.this-anchor-link.com/

链接

普通链接

直接链接:https://github.com

锚点链接


[!note]+ 脚注

注意:所有符号都是英文输入法下的符号
方括号内,上箭头,外加脚注名称(一般为标号)
本句话要加脚注[^01]
[^01]:这是解释脚注 01的内容

脚注

  1. 要添加脚注的话1
  2. 第二个要添加脚注的话2

[!note]+ 图片

注意:所有符号都是英文输入法下的符号
图片语法与链接类似,只是在前面多一个感叹号!。
示例:![替代文本](图片路径 "可选的图片标题")
替代文本:当图片无法显示时展示的文字,也有助于屏幕阅读器。
图片路径:可以是网络图片的 URL,也可以是本地文件的相对或绝对路径。
可选的图片标题:鼠标悬停在图片上时显示的提示文字。

带链接的图片 (Clickable Images):
使用方法:将图片的 Markdown 语法作为链接的“链接文本”部分。
[![替代文本](图片路径)](链接地址)
[![可爱的猫咪](/assets/obsidian.jpg)](https://www.bing.com/)
点击即可跳转到bing.com,哪怕图片找不到,点击依然跳转到链接。

图片

Obsidian Logo

可爱的猫咪


[!note]+ 表格

注意:所有符号都是英文输入法下的符号
表头: 用竖线 | 分隔单元格内容。
分隔行: 用竖线 | 分隔,并使用至少三个减号 - 来创建每个单元格的分隔线。可以通过在减号前后添加冒号 : 来控制该列的对齐方式:
左对齐 (默认)::--- (或 :-)
居中对齐::---: (或 :-:)
右对齐:---: (或 -:)
内容行 (Content Rows): 用竖线 | 分隔单元格内容。
最外层的竖线 | 是可选的,但为了美观和清晰,建议加上。

表格

名字姓氏电子邮件
JohnDoe[email protected]
MuffinPoppies[email protected]
JaneDoe[email protected]
左对齐居中对齐右对齐
AAABBBCCC

[!note]+ 代码

注意:所有符号都是英文输入法下的符号
行内代码用一个点包裹,代码块用三个点包裹,点是键盘上数字1左边的点。
代码块可以指定代码语言,比如python、javascript,直接加在三个点后面即可。
对于 Markdown 中的语言标识符(例如 javascript),通常不区分大小写。这意味着 javascript、JavaScript 和 JAVASCRIPT 应该产生相同的语法高亮效果。不过,最佳实践是使用小写形式。但这也可能取决于具体的 Markdown 解析器。

Mermaid代码可以生成各种图标,感兴趣的可以单独学习Mermaid语法。

代码

行内代码 变量 myvar 被设置为值 100

代码块

import numpy as np
def calc(a):
	return np.sqrt(a)*3

test = calc(12)

Mermaid代码:

graph TD
    A[开始] --> B(处理);
    B --> C{条件?};
    C -- 是 --> D[操作1];
    C -- 否 --> E[操作2];
    D --> F[结束];
    E --> F;

[[Obsidian]]特有或增强的Markdown 功能

[!note]+ 双链

注意:所有符号都是英文输入法下的符号
1. [[笔记文件名]]:链接到仓库内的另一篇笔记。使用方法:用双层方括号 [[]] 包裹笔记的文件名 (无需 .md 后缀)。示例:[[我的待办事项]]
2. [[笔记文件名#标题名]]:链接到另一篇笔记中的特定标题。使用方法:在文件名后加 # 和目标标题的文本。示例:[[Markdown 语法详解#10. 表格]]
3. [[笔记文件名|自定义显示文本]]:链接到另一篇笔记,但显示自定义的链接文字。使用方法:在文件名后加 | 和希望显示的文本。示例: [[2024-05-27 Daily Note|昨天的日记]]
4. ![[笔记文件名]]:将另一篇笔记的全部内容嵌入到当前笔记中。使用方法:与图片嵌入类似,但使用双层方括号,并以 ! 开头。示例: ![[常用代码片段]]
5. ![[笔记文件名#标题名]]:将另一篇笔记中特定标题下的内容嵌入。使用方法:在文件名后跟特定标题。示例: ![[会议记录#行动项]]
6. ![[笔记文件名#^块ID]]:嵌入笔记中被 \^块ID 标记的特定块(段落、列表项等)。使用方法:先在源笔记中,在你想要引用的段落或列表项的末尾添加一个块引用ID,格式为 ^yourBlockID (例如 ^task123)。然后在目标笔记中用 ![[源笔记文件名#^yourBlockID]] 来嵌入它。示例:在 "任务列表.md" 中: - [ ] 完成报告 ^reportTask,然后在当前笔记中嵌入: ![[任务列表#^reportTask]]

双链

注意:这里使用反斜杠,是为了让Obsidian不把他识别为一个双链,否则Dashboard就会被认为是一个双链,从而在关系图谱中看到这个Dashboard节点。 内部链接: [[Dashboard]]


[!note]+ 标签

注意:所有符号都是英文输入法下的符号
以井号 # 开头,后跟标签名称。标签名不能包含空格,可以用 - 或 _ 连接多词标签 (如 #读书笔记 或 #project-alpha)。标签可以放在笔记的任意位置,包括 YAML Frontmatter 中的 tags 字段。

标签

标签: #dashboard #notes


[!note]+ 数学与公式

注意:所有符号都是英文输入法下的符号
Obsidian 内置了对 KaTeX 的支持,用于渲染 LaTeX 数学公式。
$行内数学公式$:将公式嵌入到文本行中。
使用方法:用一对美元符号 $ 包裹 LaTeX 公式。
$$块级数学公式$$:将公式在单独的块中居中显示。
使用方法:两对美元符号包裹

数学与公式

$$g=g_0 \frac{R^2}{\left( R + z \right)^2} = \frac{g_0}{\left(1 + z/R \right)^2} $$

其中, $g$ = 指定距离处的相对引力。 $g_0$ = [[Surface Gravity |物体的表面引力]]。 $R$ = 物体的半径。(通常是物体的赤道半径)。 $z$ = 物体表面以上的距离。


[!note]+ 引用块

注意:所有符号都是英文输入法下的符号
使用方法: 引用块 (>) 之后紧跟 [!类型]。类型可以是 note, abstract, info, todo, tip, success, question, warning, failure, danger, bug, example, quote 等。
可选标题**: 在 [!类型] 后可以添加自定义标题文本。
可折叠**: 在类型后加减号 - (如 [!INFO]-) 可使标注默认折叠,加加号 + (如 [!INFO]+) 可使其默认展开 (通常默认就是展开)。

引用块 (Callouts)

[!note]+ 笔记引用块 这是一个笔记引用块…

[!warning]- 警示引用块 这是一个警示引用块…

Footnotes

  1. 脚注内容一

  2. 脚注内容二