Math Chords:让 Obsidian 支持可自定义的 LaTeX 公式输入快捷键

· 英文版
最近更新:

用 Obsidian 做学术和教学笔记时,经常需要大量输入公式,纯手打 \frac、希腊字母和定界符既慢又容易出错。我希望能有类似 LyX 的快捷输入方式,于是用 Cursor 做了一次 vibe coding,写了一个 Obsidian 插件 Math Chords

源码与 Release:github.com/ichenh/obsidian-math-chords


Version License: MIT CI

Math Chords 让你在 Obsidian 里用快捷键输入 LaTeX 公式:先按可配置的 leader 键,再按短按键序列,即可插入公式片段,无需手打复杂的 LaTeX 代码。还支持行内 MathJax 实时预览,以及行间公式环境包裹。

内置默认快捷键参考了 LyX 数学模式的绑定。

当前版本:v0.1.0。CHANGELOG


目录


功能

功能说明
快捷键按可配置的 leader 键,再按按键序列插入 LaTeX 片段。
光标占位符命令模板中的 $$ 标记光标(或选区)位置,例如 \frac{$$}{}
自动 $…$ 包裹可选:在公式区域外插入时,自动用行内公式定界符包裹。
行内实时预览光标位于 $…$ 内时,在公式上方用 Obsidian 原生 MathJax 渲染预览。
行间公式环境$$…$$ 内,通过模糊搜索选择 \begin{…}…\end{…} 包裹已有内容。
内置数学命令Ctrl+M 插入行内公式、Ctrl+Shift+M 插入行间公式(本插件注册的 Obsidian 命令)。
YAML + 设置界面编辑 shortcuts.yaml 或使用设置页;修改后立即重建快捷键查找树。
非破坏性合并加载时合并缺失的默认快捷键,不会覆盖你的自定义绑定。

安装

手动安装

  1. 下载或构建 main.jsmanifest.jsonstyles.css
  2. 复制到 <库>/.obsidian/plugins/obsidian-math-chords/
  3. 可选:复制 shortcuts.yaml(若缺失,插件会自动生成默认文件)。
  4. 设置 → 社区插件 中启用 Math Chords 并重新加载 Obsidian。

从源码构建

git clone https://github.com/ichenh/obsidian-math-chords.git
cd obsidian-math-chords
npm install
npm run build

main.jsmanifest.jsonstyles.cssshortcuts.yaml 复制到库的插件目录。


快速开始

  1. 在 Markdown 笔记中定位光标。
  2. 按下 leader 键(默认 Alt+M,可在设置中修改)——可在设置中开启 which-key 提示面板。
  3. 继续按快捷键,例如 F\frac{}{},光标落在分子处。
  4. 希腊字母:G A\alpha(leader 之后的按键)。
  5. 行间公式:D$$\n\n$$
  6. $$…$$ 内,按 Shift+E(默认,leader 之后)选择环境并包裹整块内容。

说明: 下文快捷键表只列出 leader 之后 的按键。默认 leader 为 Alt+M


快捷键参考

结构与行间公式

按键插入说明
F\frac{}{}分数
S\sqrt{}平方根
Shift+R\sqrt[]{}n 次根
^^{}上标
Shift+__{}下标
D$$…$$行间公式块

运算符与符号

按键插入说明
U\sum求和
I\int积分
Shift+I\int_{}^{}带上下限积分
Y\oint环路积分
P\partial偏导
Shift+P\prod_{}^{}连乘
L\lim_{}极限
8\infty无穷
''撇号
+\pm正负号
= |\neq不等号

重音与修饰

按键插入说明
"\ddot{}二阶导点
H\hat{}尖帽
\\grave{}重音符
/\acute{}锐音符
&\tilde{}波浪
-\bar{}上横线
.\dot{}一阶导点
Shift+V\breve{}短音
Shift+U\check{}抑扬
V\vec{}向量箭头
_\underline{}下划线
B\overline{}上划线
A W\widehat{}宽尖帽

定界符

按键插入说明
(\left(\right)圆括号
[\left[\right]方括号
{\left\{\right\}花括号
<\left\langle\right\rangle尖括号
>\left)\right(反圆括号
|\left|\right|竖线
B N\left|\right|范数
B F\left\lfloor\right\rfloor下取整
B E\left\lceil\right\rceil上取整

希腊字母 — 小写(G + 键)

按键插入按键插入
G A\alphaG N\nu
G B\betaG O\omega
G C\chiG P\pi
G D\deltaG Q\vartheta
G E\epsilonG R\rho
G F\phiG S\sigma
G G\gammaG T\tau
G H\etaG U\upsilon
G I\iotaG V\theta
G J\varphiG X\xi
G K\kappaG Y\psi
G L\lambdaG Z\zeta
G M\mu

希腊字母 — 大写与变体(G Shift+ + 键)

按键插入按键插入
G Shift+D\DeltaG Shift+S\Sigma
G Shift+E\varepsilonG Shift+T\varsigma
G Shift+F\PhiG Shift+U\Upsilon
G Shift+G\GammaG Shift+V\Theta
G Shift+L\LambdaG Shift+O\Omega
G Shift+P\PiG Shift+X\Xi
G Shift+Y\Psi

扩展前缀

箭头W 前缀):W R \rightarrowW L \leftarrowW Shift+R \RightarrowW Shift+L \LeftarrowW M \mapsto

运算符O 前缀):O T \timesO C \cdotO D \divO E \equivO L \leqO G \geqO A \approxO I \inO U \cupO Shift+U \capO Shift+N \nabla

字体T 前缀):T B \mathbf{}T C \mathcal{}T R \mathrm{}T Shift+R \mathbb{}T T \text{}

矩阵M 前缀):M P pmatrix,M B bmatrix,M C cases

完整列表见 shortcuts.yaml(101 条默认快捷键)。


行间公式环境包裹

在行间公式块 $$…$$ 内:

  1. 按 leader 之后配置的快捷键(默认 Shift+E)。
  2. 从模糊搜索列表中选择环境。
  3. 插件会包裹整个块内容(不仅是选区),例如
    $$\alpha+\beta$$$$\begin{aligned}\alpha+\beta\end{aligned}$$

在设置的 行间公式环境包裹 中配置环境(名称 / \begin{…} / \end{…})与触发按键,或在命令面板运行 Wrap display math with environment

默认环境:alignedmatrixcasesgathered


配置

shortcuts.yaml

快捷键为 YAML 数组。leader 键在设置中全局配置,不写在每条记录里。

- keys: "F"
  command: "\\frac{$$}{}"
  name: "Fraction"
  group: "Structures"

- keys: "G A"
  command: "\\alpha"
  name: "alpha"
  group: "Greek"
字段必填说明
keysleader 之后的按键序列。空格分隔;修饰键用 +(如 Shift+SG A)。
commandLaTeX 片段。$$ 表示光标/选区位置。设置界面中写 \frac 即可,无需 \\frac(会自动规范化)。
name设置表与 which-key 面板中的显示名称。
group设置表中的分组标签。

特殊命令 __DISPLAY_MATH__ 插入 $$…$$ 块(D 使用)。

按键规范化

  • 按键规范为小写 修饰键+基键 顺序:ctrlaltshiftmeta
  • 字母默认小写,除非显式写 Shift(如 Shift+A)。

设置

打开 设置 → Math Chords

设置项默认值说明
启用插件leader 快捷键总开关。
显示快捷键提示leader 后显示 which-key 面板。
行内公式实时预览$…$ 上方 MathJax 预览。
Leader 键Alt+M快捷键前缀;YAML 中 keys 为 leader 之后的部分。
公式外自动包裹非公式区域插入时自动加 $…$
行间公式环境包裹$$…$$ 内打开环境选择器。
环境包裹快捷键Shift+Eleader 之后触发环境选择器的按键。
数学环境4 个内置可编辑的环境列表。

快捷键管理: 搜索、添加、编辑、删除;Reload 重新读取 YAML;合并默认 追加缺失的内置项,不覆盖已有绑定。


更新快捷键

插件加载时(或点击 Reload / 合并默认):

  1. 已有 YAML 条目原样保留(相同 keys → 相同绑定)。
  2. 尚未出现的默认快捷键会追加到文件末尾。
  3. 更新后的内容写回 shortcuts.yaml

若要完全重置,删除 shortcuts.yaml 后重新加载插件(会重新生成默认文件)。

从 TypeScript 重新生成仓库默认 YAML:

npm run seed

项目结构

obsidian-math-chords/
├── src/                    # TypeScript 源码
│   ├── main.ts             # 插件入口
│   ├── leader.ts           # Leader 快捷键状态机
│   ├── defaults.ts         # 默认快捷键目录
│   ├── config.ts           # YAML 读写与合并
│   └── …                   # 公式检测、预览、设置界面等
├── shortcuts.yaml          # 随仓库分发的默认快捷键(101 条)
├── styles.css              # 预览与设置样式
├── manifest.json           # Obsidian 插件清单
├── esbuild.config.mjs      # 构建配置
└── scripts/seed-yaml.cjs   # 从 defaults.ts 生成 YAML

开发

npm install
npm run dev    # 监听模式构建
npm run build  # 类型检查 + 生产构建
npm run seed   # 从 src/defaults.ts 重写 shortcuts.yaml

模块划分与约束见 .cursorrules

欢迎提交 Pull Request,提交前请运行 npm run build

发布

  1. 更新 manifest.jsonpackage.json 中的 version,并在 versions.json 中添加映射。
  2. 更新 CHANGELOG.md
  3. 提交后打 tag(不要加 v 前缀),例如 git tag 0.1.0 && git push origin 0.1.0
  4. release 工作流 会自动构建并附上 main.jsmanifest.jsonstyles.css

AI 辅助说明

本仓库在人工审阅下使用 AI 辅助编程工具(Cursor IDE 与大语言模型)进行开发与维护。

  • 完整说明:AI-ASSISTANCE.md
  • 贡献者若使用 AI,请在 PR 中说明,并审阅全部输出。

许可证

MIT © CHEH Hua