关于 vditor.insertValue()插入问题

使用 vditor.insertValue()插入,发现代码块格式会丢失错乱,如下图

image.png

@88250 @Vanessa 求两位大佬解答

  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    233 引用 • 1350 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Vanessa
    订阅者

    试试这个

    vditor.insertValue(`\n\`\`\`java
    
    
    
        <!-- TODO 超级SDK:添加网络安全配置, 以在Android9.0上访问http资源 -->
        <application
    
            android:networkSecurityConfig="@xml/super_network_security_config" >
    
    
    
            <!-- SuperSDK start -->
            <!-- TODO 超级SDK:添加FileProvider配置,以在Android9.0上访问文件,\${package_name}为应用包名,包名在gradle中配置 -->
            <provider
                android:name="cn.ewan.supersdk.provider.SuperFileProvider"
                android:authorities="\${package_name}.super.fileprovider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/super_file_path"/>
            </provider>
            <!-- SuperSDK end -->
    
        </application>
    \`\`\``.replace(/</g, "&amp;lt;"))
    
    4 回复
    2 操作
    Vanessa 在 2022-09-23 15:15:48 更新了该回帖
    Vanessa 在 2022-09-23 15:15:11 更新了该回帖
  • 其他回帖
  • lzsk 6 评论
    作者

    你好,那假如我要插入的 markdown 文档中,代码块只是其中一部分 那这种插入方法不就没用了吗,例如一篇 markdown 文档中不止有代码块 还有其他的文本格式 @Vanessa

    整段用 setValue
    Vanessa
    @Vanessa 问题是我想实现的功能是在原有的 markdown 文章插入其他的 markdown 文章,setValue 不是会清空掉原来的 markdown 吗
    lzsk
    @Vanessa 我想要的是在原来的 markdown 文本光标处插入一段别的 markdown,而这其中就会导致新插入的 markdown 文本里的代码块出现问题
    lzsk
    @lzsk 那就先 replace 试试
    Vanessa
    @Vanessa 用了你的代码发现是可以的 但是就是如我之前提的,如果是一整篇 markdown 在光标处插入另外一篇 markdown,插入的内容里面不单单是代码块,那这种该怎么解决呢
    lzsk
    @Vanessa 用了 replace 实验后发现代码块后面跟着外链链接 会把外链链接带到代码块里面去,也会出现出现错乱,我在下方发图片给你看下
    lzsk
  • lzsk 12 评论
    作者

    @Vanessa 下图是使用 replace 会引发的问题

    image.png

    image.png

    看上去是对的。代码块是不会渲染链接的。
    Vanessa
    @Vanessa 不不不,第二张图其实是用 newVditor 的渲染,第一张图是用你提供的方法去渲染,然后出错了,原本应该跟在代码块后的链接,直接放到了代码块上去了
    lzsk
    @Vanessa 我可以把整篇 markdown 发给你吗,你可以试试用 insertValue 真的有 bug
    lzsk
    @lzsk insertValue 是特殊处理过的。可以使用 setValue
    Vanessa
    @Vanessa v 姐 我可以加你个 qq 啥的吗 方便沟通这个问题 可能是我表达有问题
    lzsk
    @Vanessa setValue 我晓得可以整篇替换,但是我的需求是在第一篇 md 的随意光标处插入第二篇 md,所以理论上说 setValue 不适用,而如果第二篇 md 只有代码块内容的话,确实可以使用大佬你提供的 replace 去解决,但是如果不只是代码块内容,就会出现问题,例如用来插入的 md 里的代码块后面有一个链接,我发现用 replace 就会将链接带到代码块里面去,就如我所发的图片那样子,求大佬解答
    lzsk
    @lzsk 随意光标处插入可能会有问题哦。md 语法被打断会造成更多的问题。
    Vanessa
    @Vanessa 那请问以后会有修复吗,我发现市面其他的编辑器,关于插入的 api 都没有这种问题,例如 vue-markdown-editor
    lzsk
    @lzsk 最近没有时间哦,你可以先用 vue-markdown-editor
    Vanessa
    @Vanessa 谢谢大佬解答 是我唐突了 嘻嘻
    lzsk
    @lzsk 没有没有,最近在肝思源笔记
    Vanessa
    @Vanessa 嗯呐 希望 vditor 越来越好
    lzsk
  • lzsk 3 评论
    作者

    @Vanessa 已发代码

    发哪里了?
    Vanessa
    只上传了下面的图片 我把代码复制给你吧
    lzsk
    需要把代码块文本也一并给你吗 @Vanessa
    lzsk
  • 查看全部回帖
融合块、大纲和双向链接
构建你永恒的数字花园
思源笔记是一款本地优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步

推荐标签 标签

  • 工具

    子曰:“工欲善其事,必先利其器。”

    239 引用 • 616 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 19 回帖 • 388 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 507 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 503 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    67 引用 • 881 回帖 • 151 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    484 引用 • 1384 回帖 • 521 关注
  • Hibernate

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

    39 引用 • 103 回帖 • 668 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    19 引用 • 21 回帖 • 18 关注
  • 思源笔记

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

    融合块、大纲和双向链接,构建你永恒的数字花园。

    104 引用 • 1152 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    254 引用 • 666 回帖 • 285 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    36 引用 • 16 回帖 • 18 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1394 引用 • 9959 回帖 • 499 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 152 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    29 引用 • 88 回帖 • 2 关注
  • iOS

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

    81 引用 • 122 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 2 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    64 引用 • 164 回帖 • 289 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    42 引用 • 24 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 3 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    883 引用 • 921 回帖
  • 周末

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

    14 引用 • 297 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    648 引用 • 529 回帖 • 292 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    143 引用 • 458 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    97 引用 • 151 回帖 • 221 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 21 关注