特性提议:块引用与所引用的内容块进行交换

本贴最后更新于 914 天前,其中的信息可能已经水流花落

前情提要

双链时代的快速无压记录——从反链面板拖拽到正文是为了编辑手感

Conor 的写作工作流——从反链面板拖拽到正文,会丢掉内容块的上下文信息

在使用双链的流程时一直有个问题,如果直接从反链面板拖动内容块到正文,会丢失这个块记录时上下文所携带的信息。如果是在正文用块引用的方式,则编辑手感会非常的差,而在思源里还会经常触发浮窗。

所以即使是把反链面板中的块挑选出来,块引到正文,我也只是把它们当做参考资料来用,不会去大幅度编辑它。

块引用与所引用的内容块交换则可以解决这个问题。

使用场景

在正文里引用反链面板中的块,右键块引用锚文本弹出选项——“与所引用的内容块交换”,将内容块交换到正文,而 daily notes 里初始块的位置则变成块引用。

这样既保留了记录时的上下文信息,也能获得最佳的编辑手感。

两种实现方式

  1. 在锚文本上右键,弹出菜单选项——交换内容块image.png

交换内容块里提供两个选项,一个是不携带子级,一个是携带子级

比如我块引用的是一个标题块(它是个叶子块),那么替换时就可以选择携带子级,把标题块及其子级内容块全部替换过来

  1. 从反链面板拖到正文

和这个 issue 联动

块移动支持复制为引用或嵌入 · Issue #3294 · siyuan-note/siyuan (github.com),提供一个快捷键拖拽,留在原文的是块引用,拖到正文的是初始内容块

适用范围

所有块引用所能存在的位置,也就是文档块除外。

一些交换场景上的讨论

  • 当块引用叶子块时,可以直接交换。

    • 块引用标题块时,存在两种使用场景,一种是为了交换标题块,一种是为了交换标题及下方所属内容,所以需要提供“携带子级交换”的功能。
    • 块引用列表块中的段落块时,也得能携带子级交换,这是为了不清楚存在“一炮三响”的用户,让他们也能正常使用携带交换(如果这个实现起来比较难,可以不用考虑)。
  • 当块引用容器块(文档块除外)时,可以直接交换。

    • 在块引用列表块和列表项块都可以这么判断,在使用交换功能的前提下,默认用户块引搜索里选中这俩时,就是要把它们交换到正文。
  • 当块引用文档块时,不存在交换的使用场景。

    • 在思源里,文档块中不会有文档块,所以即使能做到交换,也没有这个使用场景。
    • 文档块的命名不能存在块引用,所以交换后,块引用会消失,而文档块到正文中只能变成正文里的标题块。

块引用交换位置后,需要默认为静态锚文本

在这种用法下,初始内容块会一直更新,所以块引用交换后,需要默认静态锚文本,这样初始内容块更新时也能保留旧版本。在初始内容块的反链里看到它的历史版本——以静态锚文本的形式存在。

  • 思源笔记

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

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

    22337 引用 • 89380 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • image.png

    这是 RR 里点击块引锚文本出现的交换选项,与初始块的交换也是分为两种,携带子级和不携带子级。

    demo1.gif

    在 logseq 的 swapblocks 插件里,是只有携带子级交换。

  • 来帮大米顶一下,非常需要这样的功能

  • 88250 1 赞同

    感谢提议,先记录 Issue #4981 · siyuan-note/siyuan

  • tmkddskf

    这个功能太有意义了,眼前一亮!

  • 这个想法很好啊,我在整理书评的时候就用过这种形式,而且可以按需自定义锚文本,这样看着更舒服:

    image.png

    但如果不是一对一关联,那么置换操作就解决不了内容版本化的问题,同时会扰乱对素材来源的跟踪。

    举例来说:

    我在 daily notes 里写了一段素材,然后我在主题 A 和主题 B 里都要用到这段素材,但是为了行文流畅,我在两个主题内需要分别对这段文字做一些修改调整,这时候这段文字就会存在主题 A 版、主题 B 版、daily notes 原始版三个版本。而无论是在主题 A 里还是在主题 B 里,我都能知道这段素材是来源于哪天的日记(很多情况下需要保留素材的日期信息,比如记录软件迭代更新、记录健身等等)。

    如果只是置换操作,那么当我编辑主题 A 时,原始素材文本就被转移到了主题 A 里,而 daily notes 里留下的则是对它的引用。当我再编辑主题 B 时,主题 B 就只剩下了与主题 A 的关联,而非与日记的关联,这样一来素材来源的跟踪链路就变了,主题 B 不再知道这段素材记录的内容是哪天发生的。

    而如果在编辑主题 B 时同样也做了置换操作,那么原始素材文字则会被转移到主题 B 里,而主题 A 里又变成了引用块,那我再查看主题 A 时一定会觉得不爽,并且这时候原本的 daily notes 里会呈现什么样呢?我不确定。

    并且此时主题 A、主题 B、原始 daily notes 不再能保留三个差异化的版本。

    所以,提议的这个置换操作只能在某些情况下有效,而在另一些情况下会带来更麻烦的问题。

    4 操作
    mowangmm 在 2022-05-28 00:00:06 更新了该回帖
    mowangmm 在 2022-05-27 14:52:55 更新了该回帖
    mowangmm 在 2022-05-27 14:52:24 更新了该回帖
    mowangmm 在 2022-05-27 14:48:32 更新了该回帖
  • mistery037

    正好想来找找看看大家对这个后期整理时候的痛点有没有什么好的方法,大佬这个提议太顶了,有这个功能确实很方便

  • 完了,看不懂了 doge

  • 交换后设置为静态锚文本我不太确定是不是必要的,暂时先不考虑了吧?

    1 回复
  • dammy 1

    D 大不用考虑默认为静态锚文本了,RR 和 logseq 的插件也没这个功能,我当时写的时候考虑太多了,这个还是交给使用者自己去设置吧

请输入回帖内容 ...