[js] 有办法在思源导入的 github 的 md 文件中实现内部锚链接跳转吗

想把一个 github 的教程 md 导入思源笔记本,但是导入后发现 md 内部链接都不能跳转,不支持 github 的内部跳转语法?

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25898 引用 • 107318 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    177 引用 • 1257 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9946 引用 • 45173 回帖 • 77 关注
1 操作
wilsons 在 2025-01-09 08:02:56 更新了该帖

相关帖子

被采纳的回答

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 哪种?

    1 回复
  • simuliya

    就是 github 支持的 md 内部跳转,那个锚点

    github 的 MarkDown 中的标题直接就是一个锚点,比如说你有一个标题是 Update ,对应的 MarkDown 语法长这样:

    ### Update

    那么只需要在要跳的地方像下面这样写就可以,然后点击 “跳转到更新” 这几个字,就能跳到 Update 标题:

    [跳转到更新](#Update) // 如果标题有空格,则应该用 a 标签

    这样子

    1 回复
  • 88250

    不支持锚点链接内部跳转,仅支持跳转到原来的超链接。

  • wuwz1 1 评论

    vditor 配置 lang 为英文不生效是咋回事

    该回帖因偏离主题而被折叠
    1 操作
    88250 在 2025-01-06 19:13:36 折叠了该回帖
    请参考项目 README
    88250
  • muxue via macOS

    这种 github 的跳转是基于前端页面的 id 跳转的,思源内部的 markdown 标题是不带标题本身作为前端 id 的。

    比如我有个文字是

    <span id="jump1">内容</span>

    我就可以用下面的 markdown 语法进行跳转

    [跳转](#jump1)

    github 支持跳转是因为他会将用户的标题作为一个 href 存在某个前端页面语法里面。但是思源里面没有这么做,所以原本的跳转就失效了。

    1 回复
  • wilsons 2

    我猜,思源没这么做的原因,可能是思源有时需要动态加载,#链接对动态加载无效,所以思源就躺平了。

    不过,我用 js 实现了这个功能,原理是第一次点击时会获取这个文档的所有标题映射,然后根据映射 map 找到对应的标题 id,然后再按照思源原有逻辑跳转。

    代码如下

    https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/%E8%AE%A9%E6%80%9D%E6%BA%90%E6%94%AF%E6%8C%81%E9%94%9A%E7%82%B9%E9%93%BE%E6%8E%A5%E8%B7%B3%E8%BD%AC.js

    亦可拿到映射直接修改思源锚点地址,这里选择尽量不改变原有文档策略。

    1 回复
    1 操作
    wilsons 在 2025-01-06 22:04:48 更新了该回帖
  • simuliya

    非常感谢,使用了一下发现有一些锚点可以跳转了,但是有些锚点还是无法跳转,并且无论能否跳转,点击链接都会打开我的文件管理器

    1 回复
  • 那是锚文本不规范导致的,不妨把你的文本发过来看看,并告知哪些锚文本不能跳转。

    或者你可以试试,把锚文本改成和和标题名一摸一样的名字试试。锚文本链接前要加#

    1 回复
  • simuliya

    是的,锚文本不规范,使用#20-行-0x14 技能咏唱 可以正常跳转,但是使用#line20 就无法跳转,只能在 github 实现跳转,并且点击链接不论如何都会打开我的文件管理器

    1 回复
  • 并且点击链接不论如何都会打开我的文件管理器

    这个应该和本代码无关,你思源里的超级链接应该都会打开文件管理器。可能受到其他插件什么影响导致的。

    你可以在新空间测试试试。

    1 回复
  • simuliya 3 评论

    把所有的插件关了也会打开,我的意思就是思源原本就会这样干吧,可以实现链接为#开头的话不打开文件管理器吗

    思源本身#开头链接不会打开文件管理器,是你本地环境问题,你用全新空间试试#开头的会打开吗?如果有问题到官方 github 提 bug
    wilsons
    @wilsons 新建了一个工作空间,随便给一段话上#开头的乱写的链接还是会打开我的文件管理器呀,难道是 bug 吗
    simuliya
    还真是思源 bug, 我在 Windows 系统上重现了,不过我更新了代码,拦截了跳转,你更新下代码再试试。 @simuliya
    wilsons
  • 嗯。。。我觉得这种内部链接是一个相对复杂的问题,涉及到根目录路径、默认首页文件名、使用的绝对路径还是相对路径等问题,不能只处理链接到本文档的链接吧。Markdown 拓展 | VuePress 给的示例就有 5 种,似乎需要更复杂的处理:public/snippet/blockCustomUpdate/preinstalled/vuePress 链接转思源链接.ts · dualwind/siyuan-plugin-block-converter - 码云 - 开源中国

    1 回复
  • simuliya

    哎这个 ts 是干什么的,我把他放进 js 的代码片段没发现有什么区别,思源的代码片段不支持 ts 还是说跟我想的功能不一样

    1 回复
  • 块转换插件的代码,把块内这种错误的链接转为思源的内部链接,不过我还没加到预设里面,回头推一下新版本

请输入回帖内容 ...

推荐标签 标签

  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    588 引用 • 3528 回帖 • 1 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 691 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 656 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 34 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 8 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 253 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 712 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖 • 1 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 114 回帖 • 176 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 727 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 662 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 8 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 511 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 228 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 248 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖 • 7 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 242 回帖 • 1 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 577 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 5 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 1 关注