编辑模式下内容不显示

在编辑模式下很多内容不显示:

阅读模式下是有的:

什么操作系统?

Obsidian 什么版本?

安装了哪些插件?

有没有最小化启动(禁用第三方插件) Obsidian 排错?

有没有二分法排错?

1 个赞

操作系统:win10
obsidian 版本:0.15.9
关闭所有插件后,问题仍没有解决。

源文件在哪里?我看看你到底写了什么了不得的内容导致 markdown 都渲染不出来。

或者你可以用 VSCode+marksman 插件看看自己的 Markdown 哪里语法写的不对。

我从来没遇到过 MD 渲染失败的案例,你是第一个。

1 个赞

源文件如下:

奶牛快传 | 免费大文件传输工具,上传下载不限速 点击链接查看 [ CS229 概率论复习.md ] ,或访问奶牛快传 cowtransfer.com 输入传输口令 42q06h 查看;

属实神奇啊,我用 VSCode 格式化之后 Obsidian 依然不能很好的实时预览。

这个 bug 有必要给官网反馈一下。

2 个赞

应该是官方的bug,控制台报错是

 app.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'length')
    at t.lineInner (app.js:1:324640)
    at t.e.line (app.js:1:321234)
    at t.blockAt (app.js:1:455622)
    at t.lineAt (app.js:1:455757)
    at t.lineAt (app.js:1:458058)
    at t.lineAt (app.js:1:458058)
    at t.lineAt (app.js:1:458058)
    at t.lineAt (app.js:1:458058)
    at t.lineAt (app.js:1:458058)
    at t.lineAt (app.js:1:458058)

删掉一部分文本倒是能恢复正常,真是奇怪
建议管理员将这个帖子类型改成建议反馈

我用windows的笔记本打开你那个文件,然后复制所有字符,粘贴到obsidian新建笔记中就正常了。我也不知道怎么回事。可能是字符编码层面的问题

lineInner的作用是,根据字符的位置或是行号找到指定行。

出错的信息来看应该是数组访问越界了,也就是说文件只有100行,却要求第101行。或是整个文件一共3000字,却要得到第3006个字符所在的行。

按行号一般会提前比较,出现这种情况的机会不大,按位置也应该会有比较的,但有出错的可能。

我发现了更离谱的事情
用sublime text打开会发现一个<0x200d>,把它删掉就正常了

但是记事本和vscode不会显示
image
image

就很奇怪

1 个赞

诶嘿,我找到了,直接敲<0x200d>是不行的,点击这里面的Copy to the clipboard复制之后,粘贴到自己的文档之后就出现了同样的情况,但具体机制还是不清楚

‍ U+200D ZERO WIDTH JOINER - Unicode Explorer (unicode-explorer.com)

1 个赞

大佬:cow::beer:

第一次知道零宽字符还是在 Emacs 论坛大家讨论中文分词的时候,不过那是用插件故意引入文件实现中文单词级光标跳转的。

1 个赞

看起来ob并不支持零宽字符,三种零宽字符0x200b,0x200c,0x200d都会导致编辑模式下该字符下方几十行以后的内容不显示

2 个赞