行内代码导致其后的文本不显示

本贴最后更新于 202 天前,其中的信息可能已经时移世易

在使用思源的最近两个版本时,行内代码后跟着中文字符时会出现光标移动不正确以及内容显示不正确

image.png

此时光标在右边,当使用键盘左键或者鼠标鼠标直接点击该行时,光标会移动到行内代码后面,如下

image.png

如果光标此时在这个位置按退格键会删掉后面的文字,再按一次退格键,则后面的一行文字都消失

image.png

image.png

此时如果按空格键,则退格没有删除的文字会出现

image.png

这个 bug 可以稳定复现,后面如果是英文字符则没有这个问题,可以通过行内代码后面加一个空格隔开中文字符来避免

  • 思源笔记

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

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

    26564 引用 • 110520 回帖
  • Q&A

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

    10235 引用 • 46493 回帖 • 63 关注

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 重现不了这个问题,你使用思源的环境是什么?

    3 回复
  • lhw233

    win 10

  • lhw233

    screenshots.gif

    可以看这个动图,我先打了一个行内公式,然后打中文字符,之后左移光标一格,就到了行内公式的后面,之后按退格键,删除倒数第二个字符,其余的如图

  • lhw233

    使用的是思源 3.1.19,用的写味主题

  • lhw233

    切换回默认主题并关闭所有插件,然后重启思源笔记,并新建一个笔记后,依然存在这个问题

  • lhw233

    经过测试,

    行级代码 行级代码后的字符 是否触发 bug
    纯数字 任意 不触发
    任意 纯数字 不触发
    含有中文字符 非数字 触发
    非纯数字 中文字符 触发
  • EmptyLight

    这已经是我在社区看到的第三个这样的问题了,我干脆自己试了一下,也没能复现这个问题

    2 回复
  • lhw233 2 评论

    我怀疑和零宽空白符有关,我不懂 web,但这会儿打开开发者工具,
    我先输入一个行内代码image.png
    此时对应的块在行内代码里和后面有零宽空白符image.png

    如果我输入数字image.png

    数字会位于零宽空白符后image.png

    当我输入中文字符image.png

    image.png

    此时已经回触发 bug,使得从句末向左移动光标回到行内代码后面,当我在行内代码后删除字符,此时会让字符串分割为两个image.png
    感觉像是零宽字符让后面的中文字符串被认为是一个 block,当开始删除字符后,形成两个 block

    不过不懂 web,也不知道思源是怎么写的,目前看正常的新的 block,一般只在行末有零宽空白符,但行级代码会在其后跟一个零宽空白符,可能触发了思源的什么 bug 吧
    lhw233
    说起来我也想知道这个字符为什么会分开,问问看 Issue #13782 · siyuan-note/siyuan
    JeffreyChen
  • lhw233

    如果是中文字符小时的 bug,此时开发者工具里显示是这样的image.png

  • lhw233

    我怀疑是零宽空格后接中文字符导致的渲染错误,你可以看看我的新的回复

  • Imuvux

    遇到了同样问题,默认主题无插件也存在行内代码导致的光标异常、文字消失,后者可以 F5 刷新恢复显示。

    1 回复
  • lhw233

    文字消失时,出现了一个多的零宽空格

    image.png

    可以看到,这第的 div 下面只有 4 个元素,而在右边的显示里,有 5 个子节点,进一步查看,节点 2 和节点 3 都是零宽空格,而节点 4 才是"本反灌"文本image.png

  • lhw233

    总结

    • 光标异常:零宽空格后接中文字符会导致光标异常
    • 文字消失:在一定操作下,会生成多余的零宽空格,连续两个零宽空格可能导致后续文字不渲染
  • lhw233 1 赞同

    F5 刷新后,好像会合并文本节点,会删除多余的零宽空格,然后文本显示正常了,但由于还是零宽空格,光标异常依然存在

  • vivitrx

    我也遇到这个问题了

    当我打出:

    我们想要访问 A[0] A[1] A[2] ... A[9999999] 共 9999999 个元素。

    此时,我的光标处于此处:

    我们想要访问 A[0] A[1] A[2] ... A[9999999] 共 9999999 个元素。

    --------------------------------------------^ 也就是指向 9

    但是当我尝试向右移动一格后,光标位置会变成:

    我们想要访问 A[0] A[1] A[2] ... A[9999999] 共 9999999 个元素。

    --------------^ 也就是指向 A

    1 回复
  • vivitrx

    找到解决办法了,当行级代码的开头是一个中文字符时,就可以避免这个问题,比如说你可以使用中文句号:

    我们想要访问 。A[0] A[1] A[2] ... A[9999999] 共 9999999 个元素。

    --------------^ 在行级代码开头加入中文句号

    但是这也太丑陋了

  • 你们遇到的这个问题有点奇妙,我和 D 都重现不出来

  • lhw233

    我把版本退回到 3.16 后问题没有了

    1 回复
  • BigTeacherHao

    那个键盘块是不是也有问题,我这键盘块和代码块一样问题

  • BigTeacherHao via macOS

    同样是 3.19 版本,mac 版没有问题,win 版有问题,问题跟楼主说的一致,win 版回到 3.16 版本就可以正常使用。

  • BigTeacherHao via macOS

    同样是 3.19 版本,mac 版没有问题,win 版有问题,问题跟楼主说的一致,win 版回到 3.16 版本就可以正常使用。

  • Matcha

    不光是行内代码有这个问题,键盘块也有问题。我的版本是 3.19,系统环境是 Windows10;

    我在 3.18 就发现这个问题了,3.17 没有出现过。

  • @participants 更新到 3.1.23 试试还有没有这个问题

请输入回帖内容 ...

推荐标签 标签

  • Access
    1 引用 • 3 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • AWS
    11 引用 • 28 回帖 • 7 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 27 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1284 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 91 关注
  • Vim

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

    29 引用 • 66 回帖 • 2 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 111 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    32 引用 • 100 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 180 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖 • 1 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • Excel
    31 引用 • 28 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 51 关注
  • 思源笔记

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

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

    26564 引用 • 110518 回帖 • 1 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 3 关注
  • 30Seconds

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

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

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 341 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 2 关注
  • WebSocket

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

    48 引用 • 206 回帖 • 282 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    229 引用 • 476 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    135 引用 • 798 回帖
  • 又拍云

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

    20 引用 • 37 回帖 • 572 关注
  • Sym

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

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

    524 引用 • 4601 回帖 • 711 关注
  • PostgreSQL

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

    22 引用 • 22 回帖 • 2 关注