本篇文章向大家推荐一款新上架的小插件:dominiclet/obsidian-note-definitions,目前版本:0.9.1。
这个插件的主要作用就是为特定的文字,比如专业术语,英文单词简写等提供一个浮框来显示其定义或者解释文字。
其实还有另外一款类似的插件 vschroeter/obsidian-glossary,它是其于文件来定义术语。两者相比较,我们要介绍地这个插件它可以在单个文件中定义多个术语,所以极力推荐使用。
这个看似简单的功能,我们能玩出什么花样呢?其有哪此应用场景,相信读者看完本文后会发现本地 Obsidian 插件库又多了一员小将。
如何使用
插件的安装很简单,去 Obsidian 插件市场搜索关键词就可以了。
这个插件的配置选项就 2 项:
在根目录定义一个放置术语的文件夹,然后在这里填写上就可以了。这个插件目前作者还在持续更新中,我这里有点意外地是这个目录不能像其它插件那样自动给出一个目录列表供选择,而是手动输入,希望作者能改进一下。
这个插件的使用也非常简单,下面我在 术语/Obsidian 插件.md 中定义两个插件描述信息:
# Obsidian II Quicker
*Obsidian-II-Quicker*
The main feature of this plugin is to quickly insert common Markdown code and HTML code, including Sup, Sub, Audio, Video, Iframe, Left-Center-Right Alignment, Variables, Footnotes, Callout, Anchor Points, HTML Comments and so on.
---
# Obsidian Note Definitions
*Note Definitions*
A personal dictionary that can be easily looked-up from within your notes.
其中一级标题用于定义术语,紧跟标题后的加粗部分表示术语的别名,然后就是描述信息了,多个术语之前使用 --- 水平线进行分隔,是不是很简洁,下面看一下实际效果:
应用举例
下面我们来看一下这一小小地插件能给我们带哪些不一样的笔记体验。
示例一:为插件名称添加描述信息
这一个案例是结合作者写作 Obsidian 相关插件教程而定制的,把这些插件的名称和简单的介绍信息放置在 术语/Obsidian 插件.md 文件中,然后我们再结合 Templater 插件来将插件名作为选项,减少输入内容(哈哈,能偷懒就不必要苦干),如果插件有别名设置,我们进一步弹出一个 PROMPT 框让用户确认。
在定义插件时统一使用命名,并且单词首字母大写,别名通常省略掉 Obsidian 前缀和 Plugin 后缀。
例如:
Templater-Obsidian-Plugin->TemplaterObsidian-Text-expand->Text ExpandObsidian-II-Quicker->II QuickerObsidian-Note-Definitions->Note Definitions
下面是具体实现参考:
%% 模板/插入插件名称.md %%
<%-*
const definitionFile = "术语/Obsidian 插件.md"
const tfile = tp.file.find_tfile(definitionFile)
const content = await app.vault.read(tfile)
const lines = content.split('\n')
const { headings, sections } = app.metadataCache.getFileCache(tfile)
// [标题,行数]
const pluginNames = []
const pluginAliases = []
headings.filter(h => h && h.level === 1)
.forEach(h => {
pluginNames.push([h.heading.trim(), h.position.start.line])
})
const selectedHeading = await tp.system.suggester(name => name[0], pluginNames)
const aliasReg = /(?<=\*)(.+?)(?=\*)/g
const aliases = lines[selectedHeading[1] + 2]
let result
if (aliasReg.test(aliases)) {
console.log(aliases.match(aliasReg)[0])
const ok = tp.system.prompt('使用别名?', aliases.match(aliasReg)[0])
if (ok) {
result = aliases.match(aliasReg)[0]
} else {
result = selectedHeading[0]
}
} else {
result = selectedHeading[0]
}
-%>
<%- result -%>
结果:
示例二:英文学习单词注解
这个插件启发了我,让我想到了在看书学习英文地时候,面对陌生地单词我们我习惯性在单词空白处写上对应的中文意思。而电子书时代我们会使用批注,通常左边正文内容,右边生僻单词注解。有了这个插件我们在通过 Obsidian 学习英文,摘录文章时,可以优雅地处理词汇问题。当然作者目前没有去研究英文学习相关的插件,这里只是借助这个插件所能联想到的应用场景。
下面是网上摘抄的一段英文,选择了 2 个单词将其定义在了 术语/英文单词.md 中,定义就不展示了。
But science does provide us with the best available guide to the future, and it is critical that our nation and the world base important policies on the best judgments that science can provide concerning the future consequences of present actions.
效果如下:
从上面的 GIF 图片来看效果还是挺不错的。
总结
这个插件很有用,但是也有些注意事项:
- 英文前后需要添加空格,但是在中文
。后面的英文内容添加空格又显得太宽,不加不生效。 - 不支持多个别名设置,且别名设置所在行前不能有空白内容。
读者可以定义一个 Templater 的词条来测试下面的内容:
中文语句后。Templater 前没有空格。❌
中文语句后。 Templater 前没有空格。✔
中文括号(Templater)❌
中文括号( Templater )✔
插件:Templater ❌
插件: Templater ✔
插件:Templater ✔
插件 Templater。❌
插件 Templater 。✔
乔布斯那句话是怎么说的?「Templater」❌
乔布斯那句话是怎么说的?「 Templater 」✔
同时作者也提了一个 ISSUE 给插件仓库,希望能更好地支持中英文混合排版的场景。
最后,动动你发财的小手,关注,点赞一键三连,你的鼓励是我坚持下去的动力。有任何问题欢迎加作者微信(jenemy_xl)沟通交流一起成长或者加入读者交流微信群一起探讨 Obsidian 的使用技巧和资源分享。
更多内容,请关注我的专栏:Obsidian 达人成长之路 - 知乎 (zhihu.com)
2024-06-19 更新内容
随着官方发布:0.12.1 后,文章早期发布时提到的在中文标点符号不显示术语的问题已经全部修复,相关 ISSUE 已关闭。
文章中吐槽设置定义文件所在目录的问题,作者也进行了优化,现在在选项中已经不能直接输入内容了,而是在文件管理器中任意根目录下的目录【右键】会出现一个【Set definition folder】的命令,点击就可以将其设置为定义目录了。
2024-06-21 更新内容
官方发布版本:0.13.0。
早期版本官方只提供了一个上下文菜单【Go to definition】来跳转到定义文件,现在随着新版本迭代新增加了一个【Edit definition】的上下文菜单,直接打开一个模态框来编辑定义内容:
2024-06-23 更新内容
官方发布版本:0.14.0。
新增了一个命令【Note Definitions: Add definition】用于打开一个【Add Definition】的模态框来添加新的定义。
这个功能很实用,减少了每次添加新内容时的文档切换时间和编辑消耗。
2024-07-07 更新内容
官方发布版本:0.18.1。
这次一下子发布了 4 个小版本,可见用户对于这款小插件的钟爱程度,以及作者的积极投入。
本次更新发现作者增加了一个非常人性化的功能:通过 YAML 属性 def-context 来定义解析的数据来源文件。作者还为此添加了一个命令 Note Definitions: Add definition context,触发后会弹出一个类似 Templater 中的 Suggester 建议框——会列举所有在定义目录中的文档供选择。
在上下文菜单【Add Definition】对话框中同步增加【Definition file】的下拉选择框来指定新创建的定义归属于哪个定义文档。
此外,作者还发现【选项】中多了【Display definition source file】这一选项来控制在定义提示 Popover 中是否显示「定义」文件来源。
这一次更新的同时也发现了一个关于中英文符号提示的 Bug——在中文问号后的英文不显示提示,望作者早日修复。
总的来说这个插件的使用场景越来越宽泛,用户群体也在增多,更多的使用场景也在促使插件不断地更新迭代——使其成为 Obsidian 不可或缺插件生态中的一员。