前情提要
双链时代的快速无压记录——从反链面板拖拽到正文是为了编辑手感
Conor 的写作工作流——从反链面板拖拽到正文,会丢掉内容块的上下文信息
在使用双链的流程时一直有个问题,如果直接从反链面板拖动内容块到正文,会丢失这个块记录时上下文所携带的信息。如果是在正文用块引用的方式,则编辑手感会非常的差,而在思源里还会经常触发浮窗。
所以即使是把反链面板中的块挑选出来,块引到正文,我也只是把它们当做参考资料来用,不会去大幅度编辑它。
块引用与所引用的内容块交换则可以解决这个问题。
使用场景
在正文里引用反链面板中的块,右键块引用锚文本弹出选项——“与所引用的内容块交换”,将内容块交换到正文,而 daily notes 里初始块的位置则变成块引用。
这样既保留了记录时的上下文信息,也能获得最佳的编辑手感。
两种实现方式
- 在锚文本上右键,弹出菜单选项——交换内容块
交换内容块里提供两个选项,一个是不携带子级,一个是携带子级
比如我块引用的是一个标题块(它是个叶子块),那么替换时就可以选择携带子级,把标题块及其子级内容块全部替换过来
- 从反链面板拖到正文
和这个 issue 联动
块移动支持复制为引用或嵌入 · Issue #3294 · siyuan-note/siyuan (github.com),提供一个快捷键拖拽,留在原文的是块引用,拖到正文的是初始内容块
适用范围
所有块引用所能存在的位置,也就是文档块除外。
一些交换场景上的讨论
-
当块引用叶子块时,可以直接交换。
- 块引用标题块时,存在两种使用场景,一种是为了交换标题块,一种是为了交换标题及下方所属内容,所以需要提供“携带子级交换”的功能。
- 块引用列表块中的段落块时,也得能携带子级交换,这是为了不清楚存在“一炮三响”的用户,让他们也能正常使用携带交换(如果这个实现起来比较难,可以不用考虑)。
-
当块引用容器块(文档块除外)时,可以直接交换。
- 在块引用列表块和列表项块都可以这么判断,在使用交换功能的前提下,默认用户块引搜索里选中这俩时,就是要把它们交换到正文。
-
当块引用文档块时,不存在交换的使用场景。
- 在思源里,文档块中不会有文档块,所以即使能做到交换,也没有这个使用场景。
- 文档块的命名不能存在块引用,所以交换后,块引用会消失,而文档块到正文中只能变成正文里的标题块。
块引用交换位置后,需要默认为静态锚文本
在这种用法下,初始内容块会一直更新,所以块引用交换后,需要默认静态锚文本,这样初始内容块更新时也能保留旧版本。在初始内容块的反链里看到它的历史版本——以静态锚文本的形式存在。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于