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

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

前情提要

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

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

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

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

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

使用场景

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

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

两种实现方式

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

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

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

  1. 从反链面板拖到正文

和这个 issue 联动

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

适用范围

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

一些交换场景上的讨论

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

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

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

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

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

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

  • 思源笔记

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

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

    18138 引用 • 66929 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 这个想法很好啊,我在整理书评的时候就用过这种形式,而且可以按需自定义锚文本,这样看着更舒服:

    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 更新了该回帖
  • 其他回帖
  • image.png

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

    demo1.gif

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

  • dammy 1

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

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

  • 查看全部回帖