-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
打通正文与文件树的壁障 #556
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
感谢分析,我理解下来落到功能上就是:提供标题块转文档块的功能,将该标题块下的内容块一并移动到新的文档块中。我的理解应该没问题吧?是不是少了些什么考虑,麻烦帮我指出,谢谢! |
没错,不过这个转换应该是双向的:
虽然说得有点啰嗦,不过这个转换应该还是很直观的。当然最重要的还是转换过程中 id 不变,以保持原来的链接有效性 |
类似地,可能还有其他容器块(List/Blockquote)似乎也可以考虑做和文档块的互转。标题块和文档块的互转在逻辑上是比较通顺的,因为标题正如你所说的刚好可以用作文档名(或相反),该设计非常巧妙。 我们再思考一阵子,不出意外的话这个提议会在 0.5.5~0.6.5 左右引入,谢谢。 |
谢谢。我认为这个问题是文档类软件比起大纲类软件最大的软肋,不过我还没给其它产品讲过。如果这个问题得以解决,我一定要公开吹爆思源。 |
实现可以选中一部分块拖拽移动到其他地方的功能就可以解决这个问题了 |
你好,目前已经基本实现完了,但是感觉有点……如果有时间,请看一下下面的内容是否清晰,将来会放在帮助文档里: 文档块和标题块的对应关系标题块和文档块具有天然的对应关系,因为:
所以我们可以在文档块和标题块之间进行相互转换。另外,因为内容块是根据 id 进行引用的,所以转换过程不会破坏已有的引用关系。 将文档块转换为标题块在文件树上,选择需要转换为标题块的文档,然后将其拖拽到编辑器页签中需要插入的位置。这里有两种情况:
文档块转换为标题块后:
将标题块转换为文档块在编辑器页签中选择需要转换的标题块,按住该标题块标识图标,然后将其拖拽到文件树需要放置的文件夹中。 标题块转换为文档块后:
如果感觉设计不好或者有简化的话欢迎讨论,目前的实现似乎有点用不起来的感觉 😂 |
小标题的升降规则看起来没有问题,不过 gif 里没看到对于引用链接的测试。 我想我大概知道你为什么会有这种感觉,有三个原因吧。 第一个原因......这个 gif 里的文字都是 foobar,没有什么实际内容,所以看不出作用。 我分享了一个 demo,可以用这里的内容试试(但是浏览器里的显示好像有点问题,引用链接没显示出来),应该会有不一样的感觉: https://ld246.com/udanax/s/1605629299270/stage/build/desktop/ 在这个 demo 里,「自然资源保护」和「汉朝」都引用了「秦朝」,「秦朝」和「汉朝」可以拖进新建的「朝代列表」里,这个实用性就比较明显了,在大纲编辑器里经常进行类似的结构重组。之后只要保证原来的引用链接不失效就好了。 第二个原因是,在大纲编辑器里,如果单独拖动某一个节点,特别是在进行距离比较远的拖动的时候,这个节点往往处于折叠状态,这样在视觉上就直观得多,不会给人一种在拖动一大坨东西的感觉。但是思源的编辑器目前还没有正文折叠功能(我一直觉得现代编辑器如果没有正文折叠功能的话实用性会大打折扣),如果在编辑器里可以按标题进行折叠,那么:
第三个原因是,文档拖进正文的时候,具体会变成几级标题似乎是看插入的位置(在上面那个 gif 里,是拖到了跟原有的某个二级标题重合的位置再松手,不知道对「同级」和「子级」有没有区分),但是,比如某个文档拖入变成了一级标题,这是手滑的结果,我实际上想让它做二级标题,可这时会发现在编辑器内部反而没有调整层级的手段了,这就显得有点割裂。 一个文件夹里的所有子文件夹和文档是树状结构,一个文档内部的所有 H 标题也是树状结构,这两棵树在以前是不能互通的,但在可以通过拖动来打通了,这才是需要这个转换功能的真正原因,是有缘由的。文件树的结构调整已经没有什么新花样可言,但是在一个文档内部,树状结构的调整往往是欠缺的。在大纲编辑器里,光标选中一部分内容然后按 tab 键,它们就会集体向右缩进,文档编辑器也可以针对 H 标题定义同样的行为,落到功能上仅仅是批量增减 H 标题的井号数目。 放两个在 org-mode 里录的动图,应该比较生动地表现出了上面的全部意思: 选中一个区域然后整体调整标题层级: 折叠状态下也可以生效: 在 {文件树,转换,文档} 这三个层面,文件树的结构调整操作其实没有什么可优化的,转换功能也完成了,剩下的就只有优化文档内部的结构调整功能了。在编辑器部分进一步优化之前,转换功能目前看来没有什么问题,这个突破已经做出了,应该可以就这样先发布。 |
感谢反馈,我们再调整下,预计下周一发布,谢谢。 |
打通正文与文件树的壁障 siyuan-note/siyuan#556
打通正文与文件树的壁障 siyuan-note/siyuan#556
文档转换为 2 级及以上的标题时,子标题的层级有 bug: 只有在文档转为 1 级标题的时候没有问题 |
|
因为「汉朝」是 2 级标题的话,「特点」当然应该是 3 级标题 |
感谢指出,稍后调整。 |
v0.5.4 中进行了一些调整,估计过两天发布,谢谢。 |
之前写的,这是原链接。
roam 基于类似于 workflowy 的大纲编辑器,尽管它用了
copy block ref
这种名字,但实际上,对 roam 来说,根本没有所谓的「块引用」这回事。因为在大纲编辑器里,「块」和「页面」完全就是一回事。其它双向链接产品刚诞生的时候,用户对它们最大的希望就是有个「块引用」,现在 Obisidian 和思源笔记已经有了这样的功能,但是体验依然比不上 roam,就是因为「文档」和「段落」之间的壁障还没有打通。
基于文档的软件需要靠段落引用来细化粒度,但是这个粒度即使细化了也没什么用。假设有一个文件叫
主题一.md
,它的内容是:基于纯文本的双向链接软件通过在正文里插入 id 的形式,实现了对每个标题的引用,思源笔记做得更彻底,直接给文件里的所有元素都加上了 id。如果结构不变化的话,看起来达到的效果已经跟 roam 一样了。
但是,如果将来
要点二
里面的内容变多,它可能需要单独拿出来形成一个要点二.md
,甚至于在文件树中移动到一个远离主题一.md
的目录下,这个时候,如果手动新建文件并复制文字进去,原来的块引用就会失效。在 roam 里,这个问题是不存在的,它的每一个 bullet 都可以随意移动,整棵内容树的结构可以随意调整;而使用基于文档的软件,为了防止内容失效,这种内容重组就只好少做甚至不做。所以基于文档的软件即使加了段落引用,在内容组织上也比不上基于大纲编辑器的 roam。
思源笔记拥有解决这个问题的先天优势,因为在思源笔记里,无论是文件还是正文里的元素,全都拥有一个 id,如果为文件树和正文都增加转换操作,正文的标题和文件之间互相转换并且保留原来的 id,原来的链接就不会失效,整个内容库里的所有元素都可以随意重组。只有做到这种程度,基于文档的软件才能真正在内容组织灵活性上追平 roam。
The text was updated successfully, but these errors were encountered: