编辑器选择
选择合适的编辑器是高效写 Markdown 的第一步。不同的使用场景需要不同的工具。
VS Code — 开发者首选
Visual Studio Code 是开发者写 Markdown 的首选,内置了基本 Markdown 支持,通过插件可以大幅增强体验。
内置 Markdown 功能
- 实时预览:
Ctrl+Shift+V(Mac:⌘⇧V)打开预览面板 - 并排预览:
Ctrl+K V(Mac:⌘K V)在侧边并排显示 - 语法高亮:Markdown 语法、代码块内语言高亮
- 大纲视图:侧边栏可显示文档标题结构
- 路径补全:输入链接路径时自动补全
- 拖放图片:将图片拖入编辑器自动生成
语法
推荐插件详解
Markdown All in One(最推荐)
最全功能插件:① 自动补全标题、链接、图片;②
Alt+Shift+F 格式化(含表格对齐);③ Ctrl+B/I 快捷键加粗/斜体;④ 自动生成目录(TOC);⑤ 列表行 Tab/Shift+Tab 缩进/提升;⑥ 数学公式预览;⑦ 导出 HTML
markdownlint
实时检查 Markdown 格式规范,波浪线标注不规范写法,悬停查看规则说明。支持 .markdownlint.json 自定义规则配置。可以在 CI 中集成做格式检查。
Markdown Preview Enhanced
增强版预览:支持 Mermaid、PlantUML、数学公式、代码块执行(Jupyter 风格)、导出 PDF/HTML/PNG。比内置预览功能更强,但较重。
Paste Image
截图后直接
Ctrl+Alt+V 粘贴,自动将剪贴板中的图片保存为 PNG 文件并插入  语法。写笔记时极其方便。Foam(类 Obsidian 体验)
在 VS Code 中实现 Obsidian 的双向链接功能:
[[文件名]] 链接、关系图谱可视化、命令快速创建新笔记。适合希望在 VS Code 中管理知识库的用户。VS Code Markdown 常用快捷键
| 快捷键(Mac / Windows) | 功能 |
|---|---|
| ⌘⇧V / Ctrl+Shift+V | 打开 Markdown 预览 |
| ⌘K V / Ctrl+K V | 并排打开预览 |
| ⌘B / Ctrl+B | 加粗选中文字(需 Markdown All in One) |
| ⌘I / Ctrl+I | 斜体选中文字 |
| Alt+Shift+F | 格式化文档(表格对齐等) |
| Ctrl+Shift+[ / ] | 降低/提升标题级别 |
| ⌘/ / Ctrl+/ | 注释(HTML 注释) |
Typora — 所见即所得编辑器
Typora 采用"所见即所得"(WYSIWYG)模式:输入 Markdown 语法后立即渲染为最终效果,无需切换预览面板。
Typora 的核心特点
- 实时渲染:输入
##+ 空格后立即变成 H2,输入**后立即变成加粗 - 专注写作:全屏模式 + 打字机模式,当前行始终在屏幕中央
- 主题丰富:内置 GitHub、学术风格等主题,支持自定义 CSS
- 导出多格式:PDF(可自定义样式)、HTML、Word(.docx)、EPUB、LaTeX
- 内置 Mermaid 和 LaTeX:无需配置,直接使用
- 图片管理:支持自动将粘贴的图片保存到指定目录
- 价格:约 89 元人民币,一次性买断,macOS/Windows/Linux 均支持
Typora vs VS Code 的选择
| 特征 | Typora | VS Code + 插件 |
|---|---|---|
| 写作体验 | 更流畅(WYSIWYG) | 传统源码编辑 |
| 对程序员友好 | 一般 | 极好(熟悉的环境) |
| 与代码文件的结合 | 弱 | 强(同一 IDE) |
| Git 集成 | 无(需外部工具) | 内置 Git 面板 |
| 扩展性 | 有限 | 强(数千扩展) |
| 价格 | 约 89 元(一次性) | 免费 |
Obsidian — 知识库管理
Obsidian 是基于 Markdown 的本地知识管理工具,其核心特色是"双向链接"(Backlinks),可以构建笔记间的关系网络。
双向链接原理
在 Obsidian 中,用 [[文件名]] 创建链接:
# 笔记 A 中 学习 Python 时,我发现 [[数据结构]] 很重要。 [[算法基础]] 也需要系统学习。 # 自动效果 # 打开"数据结构"笔记时,可以看到"反向链接" # 列出所有链接到它的笔记(包括笔记 A) # 这就是"双向链接":A 链接 B,B 也知道被 A 链接
Obsidian 特有语法
| 语法 | 功能 |
|---|---|
[[笔记名]] | 内部链接(双向链接) |
[[笔记名|显示文字]] | 带别名的内部链接 |
[[笔记名#章节]] | 链接到特定章节 |
![[笔记名]] | 嵌入其他笔记的全部内容 |
![[笔记名#章节]] | 嵌入其他笔记的特定章节 |
![[图片.png|200]] | 嵌入图片并指定宽度 |
#标签 / #父标签/子标签 | 标签(支持层级) |
> [!note] 标题 | Callout 告警块 |
推荐插件
核心增强插件
- Dataview:将笔记作为数据库查询
- Templater:强大的模板引擎
- Calendar:日历视图 + 每日笔记
- Tasks:任务管理和查询
可视化插件
- Excalidraw:手绘风白板
- Canvas:内置白板功能
- Mind Map:思维导图视图
- Charts View:图表可视化
Pandoc — 格式转换神器
Pandoc 是"文档转换界的瑞士军刀",可以将 Markdown 转换为几乎任何文档格式(反之亦然)。
安装
# macOS brew install pandoc # Ubuntu/Debian apt install pandoc # Windows(推荐使用官方安装包或 winget) winget install pandoc
基本转换命令
# Markdown → HTML pandoc README.md -o README.html # Markdown → HTML(带独立页面,含 CSS) pandoc README.md --standalone -o README.html # Markdown → PDF(需要安装 TeX 环境) pandoc README.md -o README.pdf # 使用 wkhtmltopdf 引擎导出 PDF(不需要 TeX) pandoc README.md -o README.pdf --pdf-engine=wkhtmltopdf # Markdown → Word 文档 pandoc README.md -o README.docx # Markdown → EPUB(电子书) pandoc book.md -o book.epub # Markdown → 幻灯片(Reveal.js) pandoc slides.md -t revealjs -s -o slides.html
YAML Front Matter 与 Pandoc
Pandoc 支持 YAML Front Matter,用于设置文档元数据:
--- title: "Pandoc 转换指南" author: "张三" date: "2026-03-26" fontsize: 12pt geometry: "margin=1in" toc: true # 是否生成目录 numbersections: true # 是否给标题编号 --- # 正文从这里开始...
# 使用模板转换(自定义 PDF 样式) pandoc report.md \ --template=my-template.tex \ --pdf-engine=xelatex \ -V mainfont="PingFang SC" \ -o report.pdf # 批量转换整个目录 for f in docs/*.md; do pandoc "$f" -o "out/${f%.md}.html" done
TIP(Pandoc + GitHub Actions 自动化)在 CI 中用 Pandoc 自动将 Markdown 文档转换为 PDF,随每次提交更新,团队始终有最新版本的 PDF 文档可以下载。这对需要打印版技术文档的团队非常实用。
MkDocs — Python 文档站
MkDocs 将一组 Markdown 文件构建成静态文档网站,主题 Material for MkDocs 是业内最受欢迎的文档主题之一。
快速上手
# 安装 MkDocs 和 Material 主题 pip install mkdocs mkdocs-material # 创建新项目 mkdocs new my-docs cd my-docs # 启动本地预览服务器(热重载) mkdocs serve # 打开 http://localhost:8000 # 构建静态网站(输出到 site/ 目录) mkdocs build # 一键部署到 GitHub Pages mkdocs gh-deploy
mkdocs.yml 完整配置示例
site_name: 我的项目文档
site_url: https://myuser.github.io/myproject
site_author: 张三
repo_url: https://github.com/myuser/myproject
repo_name: myuser/myproject
edit_uri: blob/main/docs/
theme:
name: material
language: zh
palette:
- scheme: default # 浅色主题
primary: indigo
accent: indigo
toggle:
icon: material/brightness-7
name: 切换到深色
- scheme: slate # 深色主题
primary: indigo
toggle:
icon: material/brightness-4
name: 切换到浅色
features:
- navigation.tabs # 顶部标签页导航
- navigation.indexes # 章节首页
- search.highlight # 搜索结果高亮
- content.code.copy # 代码块复制按钮
plugins:
- search:
lang: zh
- minify:
minify_html: true
markdown_extensions:
- pymdownx.highlight: # 增强代码高亮
anchor_linenums: true
- pymdownx.superfences # 支持 Mermaid
- admonition # 告警块
- pymdownx.tasklist # 任务列表
nav:
- 首页: index.md
- 快速开始:
- 安装: getting-started/install.md
- 配置: getting-started/config.md
- API 参考:
- 概述: api/overview.md
- 端点: api/endpoints.md
- 开发指南: dev-guide.md
MkDocs Material 的 Admonition 语法
!!! note "可选标题"
这是一个信息提示块。
支持在 Markdown 文档中使用(不是 GitHub Alert 语法)。
!!! warning
这是警告,没有自定义标题时显示默认标题。
??? tip "折叠的提示(默认折叠)"
这个内容默认折叠,点击展开。
???+ info "展开的提示(默认展开)"
这个内容默认展开,可以点击折叠。
Docusaurus — React 文档站
Facebook(Meta)开源的文档框架,基于 React,支持 MDX(Markdown + JSX),适合大型产品文档。
快速上手
# 使用 classic 模板创建项目(推荐) npx create-docusaurus@latest my-docs classic --typescript cd my-docs # 启动开发服务器 npm start # 构建生产版本 npm run build # 预览构建结果 npm run serve
Docusaurus 的核心特色
内容功能
- MDX:在 Markdown 中使用 React 组件
- 版本管理:多版本文档并存
- 博客:内置博客功能
- i18n:多语言支持
性能与 SEO
- 静态生成:构建时预渲染所有页面
- Algolia 搜索集成
- sitemap 自动生成
- OpenGraph 元标签支持
MDX 的威力
# 在 .mdx 文件中使用 React 组件 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ## 安装 <Tabs> <TabItem value="npm" label="npm" default> ```bash npm install my-package ``` </TabItem> <TabItem value="yarn" label="yarn"> ```bash yarn add my-package ``` </TabItem> <TabItem value="pnpm" label="pnpm"> ```bash pnpm add my-package ``` </TabItem> </Tabs>
Lint 与格式检查工具
markdownlint
基于规则的 Markdown 格式检查工具,可以在 CI 中集成:
# 安装 npm install -g markdownlint-cli2 # 检查文件 markdownlint-cli2 "**/*.md" "#node_modules" # 自动修复(部分规则支持) markdownlint-cli2-fix "**/*.md"
# .markdownlint.json 配置示例 { "default": true, // 启用所有规则 "MD013": false, // 不限制行长度 "MD033": { // 限制 HTML 标签使用 "allowed_elements": ["details", "summary", "br", "img", "div", "mark"] }, "MD041": true, // 第一行必须是 H1 "MD022": true, // 标题前后要有空行 "MD024": { // 处理重复标题 "siblings_only": true // 只检查同级重复(允许不同章节有相同子标题) }, "MD046": { // 代码块风格 "style": "fenced" // 强制使用围栏代码块 } }
Prettier 格式化
# 安装 npm install -D prettier # 格式化所有 Markdown npx prettier --write "**/*.md" # .prettierrc 配置 { "proseWrap": "always", // 自动折行 "printWidth": 100 // 行宽限制 }
markdown-link-check 链接检查
# 安装 npm install -g markdown-link-check # 检查单个文件 markdown-link-check README.md # 检查目录下所有文件 find . -name "*.md" -not -path "*/node_modules/*" | xargs -L1 markdown-link-check # .markdown-link-check.json 配置(忽略某些链接) { "ignorePatterns": [ { "pattern": "^https://localhost" }, { "pattern": "^file://" } ], "retryOn429": true, "retryCount": 3 }
在 GitHub Actions 中集成所有检查
name: Markdown Quality
on:
push:
branches: [main]
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 安装依赖
run: npm ci
- name: markdownlint 格式检查
run: npx markdownlint-cli2 "**/*.md" "#node_modules"
- name: 链接有效性检查
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
config-file: '.markdown-link-check.json'
Markdown 解析器对比
了解主流 Markdown 解析器,有助于理解为什么同一文档在不同平台渲染不同:
| 解析器 | 语言 | 规范 | 使用场景 |
|---|---|---|---|
| marked | JavaScript | GFM | 前端/Node.js,GitHub Pages |
| markdown-it | JavaScript | CommonMark + 插件 | VS Code 内置,VitePress |
| goldmark | Go | CommonMark | Hugo(静态博客) |
| Python-Markdown | Python | 原始 Markdown | MkDocs |
| mistune | Python | CommonMark | Python 项目 |
| kramdown | Ruby | CommonMark+扩展 | Jekyll(GitHub Pages) |
| pandoc | Haskell | Pandoc Markdown | 文档转换 |
| pulldown-cmark | Rust | CommonMark | zola、Rust 文档工具 |
小结
本章要点
- VS Code + Markdown All in One:开发者的最优选,插件生态强大,支持 Git 集成
- Typora:写作者的最优选,WYSIWYG,导出格式丰富;约 89 元一次性购买
- Obsidian:知识库管理最优选,双向链接构建知识图谱,本地存储免费
- Pandoc:格式转换利器,支持 Markdown → PDF/Word/EPUB/PPT 等几乎任意格式
- MkDocs + Material:Python 文档站,配置简单,主题美观,一键部署到 GitHub Pages
- Docusaurus:React 文档站,支持 MDX,版本管理,适合大型产品文档
- markdownlint:格式检查;Prettier:自动格式化;markdown-link-check:链接有效性