可编辑的浮窗与可导出的 Markdown Mindmap 导图

本帖作为介绍继续,代码可见于复刻版本保留 jdysya/obsidian-markmap-fileviews

一个自定义视图的案例,适合学习。

功能列表 | Functions

主视图 | Main View

  • 通过命令创建当前活动文档的 Markmap 视图,默认快捷键 Ctrl + M。
  • 测试文本改自 Markmap 官方案例:https://markmap.js.org/repl

  • 设置 Ob 内部链接在 Markmap 中转化为按钮,点击出现对应可编辑浮窗。有时首次点击时是聚焦页面,所以没有反应,再点击一次即可。
  • 浮窗左上角固定按钮点击固定浮窗,再次点击取消固定并关闭浮窗。
  • 按住 Ctrl 键可拖动移动浮窗位置。
  • 视图右上角固定按钮点击固定导图文档源(切换文档时),再次点击取消固定。
  • 左下角为导出 PNG 按钮。

代码块 | Codeblock

```markmap
---
markmap:
  height: 200
---
## Root
### Branch1
### Branch2
```
  • Frontmatter 区为可选部分,所设格式是为了和 Mindmap NextGen 插件保持一致。由于不想引入更多的包,目前只支持设置高度 (px),近期不会扩展。

导出 PNG / PDF

其他.old 文件夹中的 ref.js 包含编写但未使用的代码、相关代码及参考插件列表等。

不足之处

  • 打开新文档时若处于阅读模式,且新文档含 markmap 代码块,切换回编辑模式后需手动刷新一下代码块。issue#4

    变通方法是使用 小插件 Sheets Basic:合并 Markdown 表格单元格 中插件的 ‘rebuildCurrent’ 命令快捷刷新。也可以参考代码自己注册一个。

  • Markmap 中的代码块导出没有高亮,这可能是因为导出方法直接转换 SVG,而 CSS 样式并不在 SVG 中。

    更新:嗯,好像官方案例给的导出示范也没有高亮来的。

    image

4 个赞

啊啊啊啊啊啊啊,关于局部代码块那部分:

```markmap
---
markmap:
  height: 200
---
## Root
### Branch1
### Branch2
```

早知道我就先来论坛搜一下了,我写之前只搜了市场插件,然后就重复造轮子了……

240916

杂项

  • 原先代码都写在一个 JS 里想的是大家下载了不管有没有环境都可以改很方便,但是现在既然选择编译 build 了,还是拆成多个 JSs 好看些。

导图

  • 支持 Magic Comments,见 Magic Comments - markmap docs

  • 兼容列表标题,因为我看见有人这么写。

    - ## 列表标题
        - 就这样
    
  • 设置 mmView.navigation 为 flase,感觉这样效果好些。

浮窗

  • 对所有想在 Ob 写可编辑浮窗的人,Excalidraw Plugin 有一段冲突,当在可编辑浮窗使用右上角更多选项删除文件时会报一个不影响进程的错。它是通过检测 app.plugins.plugins['obsidian-hover-editor'] 规避的,也即作者只考虑了和 Hover Editor 插件的兼容。

    目前使用的是 Proxy 方法,因为 Ob 自己是通过 hasOwnProperty() 检测的,这样保证设置 - 第三方插件的面板能正确加载,同时兼容 Excalidraw。欢迎有更好的方法建议。

    app.plugins.plugins = new Proxy(app.plugins.plugins, {
      get: (target, prop)=> !!(prop == 'obsidian-hover-editor')||target[prop]
    })
    
  • 不过 Ob 在 v1.7.0 后核心插件页面预览就可编辑了,见 Insider 版本 v1.7.0#新功能,之后想自定义的人就不多了吧。
    更新到 v1.7.4,只能说自带的可编辑还有许多优化空间…

另外 #1 提到的不足之处如果谁有相关想法的话欢迎给点建议哦。

1 个赞


列表没有层级

@charleslu 我这边没事,可能是因为我是拿空格缩进的?高层级带标题的文本好像也没匹配到,我改改正则看看行不行吧。因为是单纯报错,后续就不继续在这个总的话题线程里了。

11:59:已修。

1 个赞

下载了 0.0.1 版本。使用 Markmap 测试文本:Block 不显示,控制台无报错信息。 Obsidian 1.7.7 in MacOS

1 个赞

@yaozhuwa 谢谢,最近好像是有点问题,修了。后续如果还有问题在其他线程继续。

241230

  • 更好的导出
  • markmap 升级到 0.18 最新

新年快乐。

另外 #1 提到的不足之处如果谁有相关想法的话欢迎给点建议哦。

1 个赞

新版本,怎么下载呢,github上没看到

@charleslu Readme 的 Tip 介绍了怎么下载,点击 Actions,再在其中挑一个下载。一般选最上面的就行。

谢谢大佬
悬浮窗口打开后没有关闭按钮

@charleslu#1 介绍。点完把鼠标移出自然关闭。

image

今年以来,陆陆续续看到许多 AI 辅助开发的案例。这种开发模式不仅降低了门槛,还使得普通人能够通过自然语言随时调整插件行为,无需等待更新。尤其是成熟软件的插件领域,集中式的分发将逐渐被个性化的开发取代。

回顾我分享的初衷。曾经,我觉得 Obsidian 是一个相对封闭的平台,即使代码写得一般,也能为他人节省一些时间。然而,随着对 AI 能力的理解加深,我感到自己的行为缺乏明确意义。

作为非计算机专业人员,我在几天前突发奇想,想要模仿多年前收藏的一个网站 [1],然后就投入了一整天的时间(虽说中途实现了感觉不够好又重构了几回就是了)。这时你可能以为我只是表达技术水平问题。进一步,当我还没意识到什么,想要分享给亲友时,一搜,这个网站是开源的。我由衷地哀叹自己的智商,并且怀疑之前所以为“封闭系统不好上手”的认知,是否符合 AI 增强搜索下的实情。

再往回走。几周前,我的仓库也迎来了他人借助 AI 的拓展开发 [2]。我见证了 AI 的高效与强大,也再次确认了普通人利用 AI 开发的可行性。市场上的同类插件 Mindmap Nextgen 今年也在 Issues 列上了修复和优化计划。无论是找地儿看看之前的代码,还是寻找成熟的工具,都有替代方案。

基于以上趋势判断以及对自身的反思,我决定放弃分享仓库,以避免他人投入精力。希望有朝一日能提供更有价值的帮助。


补充一个可能有人用得到的教程:GitHub 上 fork 了一个仓库,如何在不删除和重建的情况下无损断开链接,与之分离


  1. Breathe Relaxer ↩︎

  2. jdysya/obsidian-markmap-fileviews ↩︎