Obsidian 插件:【Readme】Title renamer
插件名片
概述
保持笔记中的顶部标题与文件名同步。
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 title-renamer 插件的自述翻译
黑曜石标题重命名器
插件用于在 Obsidian 中保持内联标题与文件名同步。
注意:目前仅在桌面版上运行。
描述
当您重命名一个文件时,此插件将在文档中搜索一个“H1”。如果找到了,并且当前文本与旧文件名匹配,则将更新以反映新文件名。
只有第一个“H1”会被替换。
背景?
我个人更喜欢在文件内容中包含页面标题,并在 Obsidian 中禁用“显示内联标题”。
- 我更喜欢将 markdown 文件的内容自包含,这样在另一个编辑器中阅读内容时,我不会错过重要的上下文。
- “标题”不一定是文件名
- 我可能希望有几个带有相同“标题”的笔记,因此我需要为实际文件名添加一些额外的上下文。
- 例如,我可能有一篇关于“领域驱动设计”概念的笔记,以及一篇关于同名书籍的埃里克·埃文斯的笔记。后者的文件名可能是“Domain-driven Design (book)”,但显示的标题中不应包含“(book)”。
- 有时,标题不是有效的文件名。
- 我会对一些客户做笔记。丹麦公司的名称以“A/S”结尾,表示一家公开交易的公司。文件名中的“/”不是有效的,但我希望在标题中显示它。
这个插件主要解决了在使用模板创建新笔记时的一些烦恼。创建新笔记时,Obsidian 会将其命名为“Untitled”。我的模板会在内容中填充
# Untitled
。现在文件名已经突出显示,准备让我输入笔记的真实名称。但在完成这一步之后,只有文件名被更改,而模板生成的内联标题没有被更改。这个插件修复了这个问题。
- 我会对一些客户做笔记。丹麦公司的名称以“A/S”结尾,表示一家公开交易的公司。文件名中的“/”不是有效的,但我希望在标题中显示它。
这个插件主要解决了在使用模板创建新笔记时的一些烦恼。创建新笔记时,Obsidian 会将其命名为“Untitled”。我的模板会在内容中填充
- 我可能希望有几个带有相同“标题”的笔记,因此我需要为实际文件名添加一些额外的上下文。
什么都没有发生,为什么?
如果文件名和 h1
同步,但什么都没有发生,那么可能是 Obsidian 的元数据缓存不同步。
Obsidian 有一个数据结构,表示数据的丰富模型,指定了“这里是标题”,“这里是正文文本”,“这里是代码块”等。这是插件用来查找标题的位置和文本的内容。
当文件更新时,这是对整个未处理文本文件的操作。如果元数据与最新内容不同步,那么上一步的位置就不再有效。如果发生这种情况,插件将不会修改文件,因为这可能会损坏文件(一个例子可能是用新标题覆盖前置元数据)。
这与“Obsidian 文件名标题同步”有何不同?
有一个备用插件,你可能想看看:
这个插件处理了一些相同的问题,但似乎有一个不同的理念,即文件名和标题应该始终保持同步。
这使得“Obsidian 文件名标题同步”比我的插件更加激进。
例如,默认设置会:
- 当您在 Markdown 中更改标题时,“它”会重命名文件。
- 当您打开一个没有标题内容的文件时,它会添加一个标题。
我不希望出现这两种行为。如果我在 Markdown 内容中更改标题,那是我故意采取的行动,目的是让标题与文件名不同(否则我只需重命名文件)。而在内容中创建标题是一个我使用模板来解决的问题。
待办事项(也许)
目前,我可以想象这两个改进。
在移动设备上使其可用
应该足够简单。目前这取决于节点的“path”模块来从旧文件名中获取预期的旧标题。这可以很容易地用正则表达式替换,但特别需要测试 Windows 文件系统和 Linux/MacOS 之间的核心差异。
使用本地化的不区分大小写搜索
在标题比较中处理本地化的不区分大小写。这将需要一个设置页面,用户可以指定他们实际写笔记的语言。
支持这项工作
您可以在这里支持我的工作:
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。