【MN插件】OhMyMN —— MarginNote 插件开发框架,也是一个可以自动处理摘录的工具箱 #Ver 4.1.1 完全体#

!image

:tada::tada::tada: 经过在 QQ 频道里近 3 个月的测试,OhMyMN 更新了 16 个测试版,现在发布 v4.1.0 签名版本,你如果从 v4.0.0 升级过来,可能你需要查看一下 更新记录,部分功能进行了删减和调整。由于 v4.0.0 版本发布的有点急,导致一些 bug 没有修复。一些功能也没来的急写,v4.1.0 才算得上完全体的 v4。

简介

对于 插件开发者

MarginNote 开放的 API 比较底层,导致上手比较困难,需要大量 Objective-C 以及 iOS 开发相关知识。OhMyMN 做的就是简化这一切,首先是将所有 API 翻译成 TypeScript 版本,并且封装了大量好用的方法,使得你不用接触到底层 API 也能进行开发。

其次,OhMyMN 提供了一套非常好用的模块化开发框架,将其与控制面板以及配置管理相绑定。想要开发一个和 OhMyMN 一样复杂的插件,离不开这些东西。

最后,OhMyMN 完全使用 TypeScript 进行开发,配合 VS Code,可以实现代码提示,类型检查,在编译期就能杜绝大多数的问题,进行功能重构时也非常方便。

目前 TypeScript 版 API 已经发布到 NPM,随着 OhMyMN v4.1.0 的发布,API 基本已经稳定,OhMyMN 的整体架构也已经稳定,基本不会进行大的调整。如果后续想要参与的人比较多,我补充上注释和文档。但目前这部分不会成为我的主要工作。


:ear: 普通用户 要注意听了

模块可以类比于插件,是 OhMyMN 内部的插件。

首先要明白 OhMyMN 本质上是一个工具箱。里面所有的功能都是单独的模块,每个模块都被赋予了三种能力:

  1. 摘录时,修改摘录的内容或者获取摘录内容并进行其他操作。
  2. 脑图中选中卡片后,对卡片进行修改或获取信息并进行其他操作。
  3. 文档中选中文字后,获取文字或选区信息并进行其他操作。

有的模块可能三种能力都用了,有的可能只用了其中一个,也有的一个都没有,仅仅只是一些选项。

使用第一种能力的模块通常以 Auto 开头,比如 AutoTitle,AutoDef,表示可以在摘录时自动执行(默认不执行,需要开启 摘录时自动执行)。使用第一种能力的模块通常还会使用第二种能力,以便处理已经存在的卡片。

第二种能力和第三种能力也通常同时使用,比如用来复制,搜索,导出。它们有一个共同的名字 —— 动作(Action)。所有模块的动作都会出现在 MagicAction for CardMagicAction for Text 中,也就是一个按钮,点击就会执行相应的动作。

除此之外,所有模块被分为了两大类:

  1. 必选模块:无法关闭的模块。
  1. 可选模块:可以选择开启的模块,可以在 OhMyMN-模块快捷开关 中启用
  • Shortcut:使用 URL Scheme 触发动作,可自行设置快捷键来打开 URL Scheme。
  • Gesture:使用手势触发动作。
  • CopySearch:复制或搜索选中的文字或选中的卡片。
  • AutoX
    • Another AutoTitle:自动转标题。
    • Another AutoDef:自动拆分摘录为标题和摘录两部分,提取标题。
    • AutoFormat:自动格式化摘录,比如自动添加空格。
    • AutoComplete:自动补全英文单词词形,填充单词信息,制成单词卡片。
    • AutoReplace:自动替换摘录中的内容。
    • AutoList:自动在指定位置换行,添加序号。
    • AutoTag:自动添加标签或者提取部分内容为标签。
    • AutoComment:自动添加评论或者提取部分内容为评论。
    • AutoStyle:自动设置摘录颜色和填充样式。
    • AutoOCR:自动对摘录的选区进行 OCR 识别或者矫正。
    • AutoTranslate:自动翻译摘录的内容。
    • AutoSimplify:自动将繁体转为简体中文。

这里就展示三个基本操作吧:

1、根据字数自动将摘录转为标题,有标题时直接合并标题,充分利用标题链接。

2、英文单词制卡,补全单词词形,充分利用标题链接。

3、对脑图卡片分层进行编号。

使用方法

使用指南:https://ohmymn.marginnote.cn/guide/

OhMyMN 非常的自由,功能强大。使用指南只提供最基本的使用方法,你需要自行探索使用技巧。现在你还可以在论坛 方法、技巧、工作流 学习到更多 OhMyMN 使用技巧,也欢迎分享你的使用技巧。

  1. 【OhMyMN 使用技巧分享】Another AutoTitle —— 自动转标题,自动合并标题
  2. 【OhMyMN 使用技巧分享】Another AutoDef —— 将摘录一分为二,提取标题
  3. 【OhMyMN 使用技巧分享】AutoComplete —— 摘录单词自动制卡
  4. 【OhMyMN 使用技巧分享】AntoFormat —— 中文格式优化
  5. 【OhMyMN 使用技巧分享】AutoList —— 摘录列表自动换行,自动编号
  6. 【OhMyMN 使用技巧分享】AntoStyle —— 自动设置摘录颜色和样式
  7. 【OhMyMN 使用技巧分享】重命名标题 —— 把卡片标题批量重命名这块彻底拿捏住!
  8. 【OhMyMN 使用技巧分享】MagicAction & Gesture —— 一键转标题,一键 OCR 公式
  9. 【OhMyMN 使用技巧分享】CopySearch —— 跳转欧陆词典查词只是冰山一角
  10. 【OhMyMN 使用技巧分享】AutoTranslate —— 自动翻译摘录
  11. 【OhMyMN 使用技巧分享】AutoOCR —— 小语种在线矫正,公式识别

:warning: 注意事项

请认真阅读

  1. OhMyMN 的使用逻辑与以往的插件均不相同,尤其是以 Auto 开头的模块,是真正的自动化。你需要设定执行的条件并开启 摘录时自动执行,让它可以在你需要的时候自动执行。模块通常会提供预设,你可以直接选用,也可以自定义。OhMyMN 不推荐无差别执行,所以没有提供全局的开关来一键开启或关闭 OhMyMN。

  2. 所有模块的预设中自定义的优先级始终最高。

  3. 如果你正在创建笔记本,需要在创建完成后重新进入,让 OhMyMN 知道你刚导入的文档。

  4. OhMyMN 只能处理摘录,从浏览器中拖进来的或者自己输入的都属于评论。

  5. 不要将 OhMyMN 和其他在摘录时自动执行的插件同时使用,可能会出现冲突。

  6. 自定义输入时需要 回车 确认,会出现保存成功的提示,同时输入法关闭。否则就是输入错误。

  7. 在插件设置中停用 OhMyMN 可以 清空配置,如果出现错误导致崩溃,可以停用再启用插件。当然,大部分情况下都不需要清空配置,不然重新设置起来会非常的麻烦。

  8. 如果你划重点,MN 会重新获取新的摘录内容,进而导致 OhMyMN 的处理失效。可以在划完重点后稍微修改一下摘录选区,即可重新处理摘录。

  9. 划完重点后,OhMyMN 获取到的重点两边会出现两个 *,比如 **这是重点**,在替换,筛选,提取等操作时要格外注意。

  10. 如果安装插件后看不到笑脸 Logo,可以尝试重现安装,如果还是不行,说明系统版本太低,可以尝试升级系统。

  11. 想要让 Auto 模块协同工作,必须先了解一下模块的执行顺序。

讨论

加入 QQ 频道,一起讨论(QQ 频道处于内测中,有可能无法加入)。频道内会发布最新版本,论坛中只会发布签名版本。

image

下载

:partying_face: 我该如何安装一款插件?

需要 MarginNote v3.7.21 版本。
ohmymn_v4_1_1_signed.mnaddon (598.4 KB)

v4 还有一个版本,将 AutoComplete 中需要的数据库打包了进来,从而不再受网络影响。数据库体积较大,并且进行了压缩,在安装插件时会解压数据库,导致首次打开 MN 时间较长,但之后不会有所影响。

该版本需要在 OhMyMN 官方 QQ 频道的新版发布中下载,欢迎加入。

源码

marginnoteapp/ohmymn: MarginNote Addon Development Framework (github.com)

54 个赞

开发者您好,我刚在下载重新使用的过程中发现,手势操作中的合并卡片内文字貌似无法正常使用,运行合并卡片内文字执行的却是编号的操作,麻烦您查看一下,谢谢!

2 个赞

现在默认会加上编号,在 MagicAction for Card 中可以自定义 合并时每条评论的前后修饰,可以前面加编号,后面加换行。

你只需要改成 $&\n 就会只加一个换行。

1 个赞

好的十分感谢,原来是现在默认改掉了,那请问如果想要之前默认直接合并的效果(不换行),是直接填写$&吗?

1 个赞

对的。。。。。。

another autotitle在浮动视图中无法正常使用

浮动视图是什么视图,发录屏

请问ohmymn怎么去除pdf文档经OCR后在脑图里的多余空格?iShot_2022-08-02_18.16.42

1 个赞

auto format 自己选预设

能否把补齐单词词形放到摘录里面第一行,这样就有很多优点,比如点中就能用欧陆词典发音,做卡片也简单!

1 个赞

那我只能建议你适应一下 OhMyMN 的逻辑,这么做是有道理的。

1 个赞

我试了,但是好像并没有什么成效

这哪有空格,你是想加空格还是去空格

我的意思是,把后面的空格去掉,也就是变成这种的iShot_2022-08-03_16.59.31

很多人都有类似的烦恼

你给我整蒙了,这不是空格的问题,这是卡片宽度的问题。

1 个赞



旧版本的已经删除了,安装4.0插件后插件版本显示不一致

1 个赞

重启MN,再不行就先卸载,再安装

好的,非常感谢开发者的解答。那请问如何根据文字的宽度自动调节卡片宽度的问题呢?