Obsidian教程10:Excalidraw

上一篇说到白板文件是 .canvas 格式,和 .md 文件是分开存在的——白板要单独管理,没法和笔记放在同一个文件里。这一篇就来介绍解决这个痛点的工具:Excalidraw 插件


Excalidraw 是什么,和白板有什么区别

先说 Excalidraw 是什么

Excalidraw 是一款免费开源的在线绘图工具,有独立的网页版(excalidraw.com),直接在浏览器里就能用,不需要注册账号。画风是手绘风,适合画流程图、思维导图、架构图这类内容。

我们在 Obsidian 里用的是第三方插件版——由社区开发者维护,不是 Obsidian 官方出品,所以需要手动安装。核心功能和网页版一样,但多了一些和 Obsidian 深度集成的特性。

和白板(Canvas)有什么区别

两者看起来都是"在画板上画东西",但文件格式完全不同,这才是核心差异:

  • 白板(Canvas):生成 .canvas 文件。这是一个独立的 JSON 文件,和 .md 笔记文件分开存在,需要单独管理
  • Excalidraw:画板数据可以压缩后嵌入 .md 文件末尾——一个文件,文字和画板共存,不用分开管理
  • 下面两张截图是同一个文件

这就是为什么我跟对接Excalidraw:你打开文件,既能看到文字,切换一下,又能看到画板,两种内容在同一个地方。


安装 Excalidraw 插件

Excalidraw 是第三方插件,需要手动安装。

路径:设置 → 第三方插件 → 社区插件市场 → 搜索"Excalidraw"→ 安装 → 启用

安装完成后,启用插件,左侧工具栏会多出一个 Excalidraw 图标。


创建和使用 Excalidraw

怎么新建文件

有两种方式:

  1. 命令面板:Cmd+P(Mac)或 Ctrl+P(Windows),搜索"Excalidraw: 新建绘图",回车
  2. 左侧工具栏:点击 Excalidraw 图标,直接新建

新建之后,默认生成的是 .excalidraw 文件(不是 .md)。别着急,怎么把它变成 .md 文件的一部分,就是后面"二合一"那一节的重点。

常用操作和快捷键

Excalidraw 的工具栏每个工具下面都标着数字,那就是快捷键——按数字直接切工具,不用去点工具栏:

工具 快捷键
选择(Selection) 1
矩形 2
菱形 3
椭圆 4
箭头 5
直线 6
手绘笔迹 7
文本 8
橡皮擦 0
平移画布 Space + 拖拽,或鼠标中键拖拽
缩放画布 Ctrl/Cmd + 鼠标滚轮
适应内容到屏幕 Shift+1
全选 Ctrl/Cmd + A
撤销 Ctrl/Cmd + Z

比白板多的一点:Excalidraw 有专门的手绘笔迹工具(快捷键 7),可以用鼠标/触控板自由涂画,白板那边做不到这个。

键盘流:手不离键盘画图

Excalidraw 也有一套纯键盘工作流,适合快速建节点、连线、写内容时用:

基础导航(选择工具模式下):

操作 快捷键
切换选中下一个/上一个元素 Tab / Shift+Tab
移动选中元素 ← → ↑ ↓
进入文本编辑 Enter(选中文本元素时)
退出编辑,回到选中状态 Esc
复制选中元素 Ctrl/Cmd + D
删除选中元素 Backspace 或 Delete
全选 Ctrl/Cmd + A

往画布里放东西

图形和文本:用工具栏选形状,点击画布就能画。文本工具点击后直接输入,支持中文。

箭头连线:选中矩形后,鼠标悬停在边缘会出现绿色连接点,从那里拖出箭头指向另一个图形,会自动吸附。

现有笔记:从 Obsidian 文件树直接拖进 Excalidraw 画布,会嵌入为一个笔记预览卡片。

图片:把图片文件拖进画布,直接显示。


重点!用 AI 画 Excalidraw

和上一篇的"AI 画白板"类似,Excalidraw 也可以直接让 Claude Code 帮你生成。

背景

前几期介绍过 Claude Code 和 Skill 系统。白板用的是 json-canvas Skill,Excalidraw 这边也有一个专门的 Skill:excalidraw-diagram。当然,Excalidraw的mcp和skill很多,可以选择自己需要的。

作者是 axtonliu,放在 GitHub 上开源:

https://github.com/axtonliu/axton-obsidian-visual-skills/tree/main/excalidraw-diagram

下载后和其他 Skill 一样,放进 ~/.claude/skills/ 目录下即可。

这个 Skill 生成的是独立的 .excalidraw 文件,适合专门用来画图、不需要和笔记文字混在一起的场景。

如果你想要直接在 .md 文件里内嵌画板(也就是后面说的二合一格式),我自己写了一个扩展版 Skill:obsidian-excalidraw,专门做这件事——生成结果直接压缩嵌进 .md 末尾,不产生额外文件。两个 Skill 用途不同,按需选择。

使用方法

在 Claude Code 里输入 /excalidraw-diagram,选中这个 Skill,按 Tab,然后描述你想画的内容。Claude Code 会生成对应的 Excalidraw 文件。

实际演示

我拿这篇文章本身来做演示——告诉 Claude Code:“把这篇 Obsidian Excalidraw 教程的章节结构画成流程图,展示各个章节之间的关系。”

Claude Code 读完内容,自动生成了一张结构图,直接嵌进了 .md 文件末尾,切换到 Excalidraw 模式就能看到。全程不需要手动拖节点、连线,比手画快很多。


重点!把 Excalidraw 嵌进 .md 文件(二合一)

先说清楚:Excalidraw 插件默认生成的是 .excalidraw 文件,和 .md 是分开的两个文件,和白板一样需要单独管理。

“二合一”不是默认行为,是需要额外配置的。配好之后,新建的文件才会是 .md 格式,画板数据压缩存在文件末尾,两者共存于同一个文件里。

白板做不到这个,但 Excalidraw 可以——配置完成后,同一个 .md 文件,既能当普通笔记写,又能当画板用,一个文件搞定。这是这篇文章最值得看的部分。

下面拆成5个步骤,一步步来。

5.1 两个关键属性

细心的读者可能已经在我之前的笔记截图里见过这两个 frontmatter 属性:

excalidraw-plugin: parsed
excalidraw-open-md: true

excalidraw-plugin: parsed:告诉 Excalidraw 插件,这个 .md 文件里含有 Excalidraw 数据,需要解析。没有这个属性,插件不会处理这个文件。

excalidraw-open-md: true:默认以 Markdown 模式打开(而不是直接进入画板模式)。设成 true,打开文件先看到的是文字,需要画图时再手动切换;如果不设,每次打开都会直接跳进画板,看文字还要反向切换,比较烦。

这两个属性加在 frontmatter 里,文件就具备了"双模式"能力。

5.2 创建模板文件

二合一的关键是把这套配置存进模板文件,之后新建笔记时自动带上,不用每次手动加。

操作步骤:

  1. 在你的模板文件夹里(比如 02模板/新建一个 .md 文件,命名为"Excalidraw模板"
  2. 把下面的内容完整复制粘贴进去,保存
---
excalidraw-plugin: parsed
excalidraw-open-md: true
---

%%
## Drawing
```compressed-json
N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MSgw4CxAHSp6AWzJJMMJTEZgaCANoBdcuihQAymHRg+oCthhEAQulQBrAOb4ujXAGF6mPT4CCAAxABmkVGqnnhm2ABefIycmJgAvuTh2Oq68MDp6UA
```
%%

这就是一个带空白画板的 Excalidraw 模板。两个 frontmatter 属性(excalidraw-plugin: parsedexcalidraw-open-md: true)告诉插件这个文件是二合一格式、默认 Markdown 模式打开;末尾的 compressed-json 是空画板数据。

5.3 Excalidraw 插件设置

光有模板文件还不够,还需要告诉 Excalidraw 插件"去哪里找模板",以及关掉一个会干扰文件管理的设置。

路径:设置 → Excalidraw

两处需要修改:

① 修改模板位置:在 Excalidraw 设置里找到"模板文件"或"Template file"选项,填入你存放模板的路径,比如 02模板/Excalidraw模板。之后每次用 Excalidraw 新建文件,都会自动套用这个模板,包括 excalidraw-open-md: true 属性。

② 关闭"新文件自动加日期":Excalidraw 默认给新文件名后面加上创建日期,比如 Drawing 2026-03-12。这个设置会让文件名变得啰嗦,而且和 Obsidian 的模板命名逻辑不兼容。找到这个选项,关掉

5.4 绑定快捷键

在 Markdown 模式和画板模式之间来回切换,靠右键菜单太慢——绑个快捷键,一下就切。

路径:设置 → 快捷键 → 搜索 “Excalidraw”

找到这一条:“Excalidraw: 在 Excalidraw 和 Markdown 模式之间切换”

绑定 Cmd+E(Mac)或 Ctrl+E(Windows)。注意先检查这个键位有没有冲突——Obsidian 默认的 Cmd+E 是斜体,如果你常用斜体,换一个别的键位,比如 Cmd+Shift+E

绑定之后,在一个二合一文件里按 Cmd+E,即可在"看文字"和"看画板"之间来回切,非常顺手。

5.5 文件尾部的压缩数据

设置好之后,每次在一个二合一文件里保存画板内容,文件末尾会自动生成一段数据:

%%
## Drawing
```compressed-json
N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQ...
```
%%

这段 compressed-json 代码块,就是画板的所有数据经过压缩后的结果——图形的坐标、颜色、文字内容、连接关系,全部压缩进了这一行字符串里。

这里有三件事要注意:

  • 不要手动删除这段内容。删了,画板数据就没了,切换到 Excalidraw 模式会看到空画板
  • %% 是 Obsidian 的注释语法,在阅读视图里这段内容是隐藏的,不会显示出来,不影响笔记的阅读体验
  • compressed-json 那一行必须是完整的单行,如果被换行截断,文件会报错打不开

总结

今天学到了什么:

  1. Excalidraw = 免费开源绘图工具:有独立网页版,Obsidian 用的是第三方插件版,手绘风无限画布
  2. 和白板的核心区别:白板生成独立 .canvas 文件需要分开管理;Excalidraw 画板数据可以压缩嵌入 .md 文件,一个文件两种用途
  3. 安装方式:设置 → 第三方插件 → 社区插件市场 → 搜索安装 Excalidraw
  4. 工具快捷键:数字键 1-8 和 0 切换工具,Esc 退出编辑,Tab 跳元素,配合箭头键移动——核心节奏是数字切工具 + Esc/Tab 导航
  5. AI 画图/obsidian-excalidraw Skill 让 Claude Code 直接生成内嵌画板,比手动拖节点快很多
  6. 二合一设置:frontmatter 加 excalidraw-plugin: parsed + excalidraw-open-md: true,用模板文件统一配置,Excalidraw 设置里改模板路径,绑 Cmd+E 快速切换模式
  7. 文件尾部数据## Drawing + compressed-json 代码块是画板压缩数据,被 %% 包裹,阅读视图不可见,不要手动删

下期预告

说到 Obsidian 用起来顺手——下一篇来聊聊怎么让它好看起来Obsidian主题

默认界面说实话挺朴素的,但换一套主题之后,整个工作台的感觉完全不一样。挑一个你愿意每天打开的界面,也是笔记系统能长期坚持用下去的原因之一。

下期见。

如果觉得有帮助,记得关注这个系列!

教程视频版本已发B站和抖音

使用 Hugo 构建
主题 StackJimmy 设计