Skip to content

编辑器扩展 ​

Obsidian 的编辑器基于 CodeMirror 6(CM6)。通过编辑器扩展(Extension)可以定制语法高亮、输入行为与装饰。

核心要点 ​

理解扩展点 ​

  • 用 editorExtension.register 注册 CM6 Extension:
ts
import { EditorView } from "@codemirror/view";

this.registerEditorExtension(
  EditorView.lineWrapping
);
  • 常见扩展类型:StateField(状态)、ViewPlugin(DOM 装饰)、Keymap(快捷键)、Facet(配置)

典型场景 ​

  • 装饰:高亮特定语法或行内标签(如 ==高亮== 的实时渲染)
  • 快捷键:绑定命令到编辑器上下文(EditorView.domEventHandlers)
  • 补全:注册 CompletionSource 做自定义自动补全

注意事项 ​

  • CM6 是「不可变状态」模型,扩展通过 updateListener 响应变更而非直接改 DOM
  • 复杂装饰用 Decoration + ViewPlugin,避免频繁重排
  • 参考 CSS 变量手册 让装饰颜色随主题切换

相关阅读 ​