Obsidian

動作

  • 更新日時を更新する
  • H1に変更があればファイル名とfrontmatterのtitleを更新する

実装

_templates/_on_save
<%*
// settings
const keys = {
  title: "title",
  modified: "modified",
}
const dateFormat = "YYYY-MM-DDTHH:mm+09:00"
 
// for date
const now = tp.date.now(dateFormat)
 
// for title
const h1 = tp.file.content.match(/^# (.+)/m)
if (!h1) {
  new Notice("Templater: _on_save insertion failed.")
  return
}
const title = h1[1].trim().replace(/[\\/:*?"<>|]/g, "")
 
// update frontmatter
const file = app.workspace.getActiveFile()
await app.fileManager.processFrontMatter(file, (fm) => {
  fm[keys.title] = title
  fm[keys.modified] = now
})
 
// update filename
if (title != tp.file.title) {
  await tp.file.rename(title);
}
 
new Notice("Templater: _on_save was applied.")
-%>

設定

  • TemplaterTemplate Hotkeysに作成したテンプレートを設定する
  • Commanderで以下のマクロを作る
    • Save current file
    • delay 250ms
    • Templater: Insert _templates/_on_save.md
  • Hotkeys<Ctrl-S>に作ったマクロを設定する