-
一个块要放到多个数据库,怎么共用属性?
2025-06-02 21:04如果目标是“数据库 A 填的属性字段在数据库 B 同步显示,不需要手动编辑”,最简单的方法是数据库 B 新建关联字段关联到数据库 A 的目标条目,然后新建汇总列,设置其
汇总字段
为数据库 A 的属性字段。 -
请问 css 能调整标题 H 的行高吗?
2025-05-30 17:36参考代码:
.protyle-wysiwyg [data-type="NodeHeading"][data-subtype="h1"] { font-size: 1.25em; }
-
插件点子征集:你最需要的插件是什么?
2025-05-07 23:47提供一些小方向吧。另外个人也不建议死磕白板,集市那么多成品半成品还不够好用说明这玩意对个人开发者还是过于困难了不集中力量很难做好。
1 指定行列数快速创建超级块表格
超级块作为“大区块”可以将块元素二维排列构造出块级表格形态容器,作为大号表格实用性远胜原生 Markdown 表格,弥补其各种不足,比如这里就有人用超级块搭建了复杂表格结构。所以希望能快速创建指定行数和列数的超级块,这样就不需要每次都手动合并调宽度了。大概算这篇帖子的升级版。
2 相邻容器块合并首层容器
- 用途
主要用来将几个断开的列表连成一个列表块。
- 功能
选中若干相邻的列表块,在右键菜单中提供《合并首层容器》功能。相邻引述块、相邻超级块同理,即若被选中块 a,b,c 首层容器类型一致,则点击合并操作仅保留首个选中块 a 的外层容器,其余选中块 b,c 的子层移到 a 的原有子层下方;如果容器类型为有序列表则更新序号。可以参考《合并为超级块》的选项位置。
- 分析
多个断开的列表块不能完美地快速合并,现有方法的问题:
1: 选中后先转换为段落,再全部选中转换为列表
这会导致指向列表项的引用失效,而且每次转换要重新选中,操作步骤多。
2: 选中后拖动列表项图标实现合并
这样不能一次合并多个相邻列表块,列表块超过 2 个时只能逐个合并。解决了这点的话也不失为一种方案,但其他容器块还是没法合并同类。
3: 选中后拖到目标列表子层,再反缩进
这个方法同时结合了法 1 操作多和法 2 不能处理多列表块的缺点。
相关帖子:思源列表反馈 | 有点奇怪的列表项逻辑
3 文档宽度超过屏幕宽度
这个功能是给移动端准备的,文档宽度相对屏幕宽度超过 100% 时向右滑动浏览。想要这个是因为手机屏幕大小有限,列表大纲的用法会带来很多缩进,严重削减竖屏可用空间。使用聚焦能稍加缓解,但一方面不停地聚焦返回操作繁琐,另一方面就算聚焦也要保留一定上下文,不可能永远聚焦在末级列表,那只要有列表缩进就仍会使横向可用区域大幅度衰减。
允许文档宽度超过屏幕宽度,像长公式块那样横滑查看就能解决手机宽度不足的问题,当然最好能把默认横滑打开菜单的交互也顺便禁掉。
-
思源要能转换 obsidian 的 md 文档
2025-04-29 15:52建议参考菜佬 @ACai ,Obsidian 笔记迁出问题挺多的。
Ob 转思源问题汇总
- 思源要能转换 obsidian 的 md 文档
- 非标准加粗语法
[[^]]
块级引用语法- 元属性语法
- 怎样让思源兼容 ob 的 md 语法
- HTML 样式问题
![[]]
引用语法问题
- Obsidian 迁移到思源的踩坑之旅
- 附件链接语法问题
- 创建时间问题
- 块 ID
- 一些看似容易迁移的格式(比如非标准 Markdown)实际上是无法迁移的,除非它的解析器是开源的。
- 思源要能转换 obsidian 的 md 文档
-
[css] 子任务背景颜色
2025-04-24 18:32上层不是任务列表的主任务:
.protyle-wysiwyg :not([data-subtype="t"])>[data-type="NodeList"][data-subtype="t"]>[data-type="NodeListItem"][data-subtype="t"]>[data-type="NodeParagraph"], .protyle-wysiwyg [data-node-index][data-type="NodeList"][data-subtype="t"]>[data-type="NodeListItem"][data-subtype="t"]>[data-type="NodeParagraph"] { background-color: var(--b3-theme-surface) !important; }
-
SQL 嵌入块重复显示
2025-04-21 16:01如果有嵌套列表会在 SQL 查询中出现容器块重复。解决方法有两个,一是把任务列表项作为
parent_id
只查叶子块,二是用比如 Query View 插件去重,QV 查询参考代码://!js const query = async () => { const SQL = ` select * from blocks where type = 'i' and subtype='t' and markdown like '%[ ]%' and root_id='20250421154321-dyt29ku' ; `; let blocks = await Query.sql(SQL); blocks=await Query.pruneBlocks(blocks,'root',true); return blocks.pick('id'); } return query();
-
导入 md 文件时候代码块的一个问题
2025-03-30 22:14思源代码块好像没有对```语法做特殊处理,理论上 Markdown 代码块内的无缩进连续反引号个数不能与代码块界定反引号数量相同。
-
直接将 markdown 文本复制粘贴进来时并不会自动辨认出相关 markdown 格式
2025-03-24 11:42我的意思就是先把要粘贴的内容贴到别的地方(个人用的 Notepad-- ),再重新复制粘贴到思源
-
直接将 markdown 文本复制粘贴进来时并不会自动辨认出相关 markdown 格式
2025-03-24 11:31试试不用 VS Code 中转粘贴,用别的记事本比如 Notepad-- 作为中转
-
思源笔记列表使用指南
2025-03-20 15:24从自身体会来说,思源列表的优势很简单就是它能放列表以外的东西。大纲笔记我只用过幕布这种极简化产品,就这么简单的使用我都感觉在反复面临那个圆点图标的拷打,不断提醒我“这一项和上一项是割裂的”。层级大纲毕竟只有上下层纵向关联和同层横向关联两种节点关联,要只用两种结构分清空间并列关系、演绎递进关系、论点-论证关系、归纳展开关系等种种逻辑关联还是比较困难,需要引入自然语言描述,于是「对节点关系的描述」本身也要建立节点,进一步增强割裂感。归根结底,大纲本质上还是适用于短文本内容组织的辅助工具,有的语义连贯的长内容本身就不应该镶在列表项里。
这篇教程的一些说法可能更有启发性,即:思源笔记的大纲具备真正的写作能力;思源笔记的大纲具备更好的制卡能力。纯列表大纲在“面对大段文本的描述时,很难以自然的姿态去对其进行语言上的衔接”,而思源可以非常自然地用列表节点作为概况项,下方则全部用常规段落块自然分段。比如我这篇回帖就是在一个链接列表项的子层写的,正文也有类似的示例图;至于列表大纲在进行面向输出的写作上的劣势,借用某佬在群里的发言:
链滴里偶尔看见有人用大纲来表达的,真的很难理解他在说什么。
-
思源什么时候支持画布或白板
2025-03-15 01:20以目前集市白板插件挂件的割据格局,官方白板有可能永远不会实现了而会一直将重心放在其他功能的打磨上。非官方功能的主要问题还是开发资源分散,插件作者各自为战很难将成果联结。比如叶归插件的白板自身也是块,还能嵌入笔记内容块并同步编辑,在组织呈现上很有潜力;Whiteboard 挂件虽然只能将其他笔记拖进白板作为伪嵌入块,但其他元素更丰富,在自由输入上继承了 Excalidraw。想同时利用这些优点就很困难,白板套白板还是有点难绷,最后只能根据需求做取舍。官方白板的意义更多在于提供一个统一平台框架。
-
为啥论坛里的子弹线列表 css 都不行了,我新建了个空间测试也不行
2025-03-08 17:08可以用 Savor 主题的子弹线样式(个人调整了非列表块顶层时的显示问题、非 Savor 主题激活节点显示)。
css 代码:
.en_item_bullet_line:not(.protyle-wysiwyg--select)::after { content: ''; display: block; box-sizing: border-box; border-left: 2px solid var(--b3-theme-primary); border-bottom: 2px solid var(--b3-theme-primary); border-bottom-left-radius: 8px; position: absolute; left: -18px; } [data-subtype="u"] .en_item_bullet_line:not(.protyle-wysiwyg--select)::after { width: 32px; height: calc(var(--en-bullet-line-height) - 1px); top: calc(var(--en-bullet-line-height) * -1 + 20px); } [data-subtype="o"] .en_item_bullet_line:not(.protyle-wysiwyg--select)::after { width: 24px; height: calc(var(--en-bullet-line-height) - 8px); top: calc(var(--en-bullet-line-height) * -1 + 25px); } [data-subtype="t"] .en_item_bullet_line:not(.protyle-wysiwyg--select)::after { width: 30px; height: calc(var(--en-bullet-line-height) - 4px); top: calc(var(--en-bullet-line-height) * -1 + 21px); } /* 激活状态样式 */ [data-subtype="u"] .en_item_bullet_actived>.protyle-action, [data-subtype="u"] .en_item_bullet_actived>.protyle-action::before, [data-subtype="u"] .en_item_bullet_actived>.protyle-action::after { color: var(--b3-theme-primary) !important; } [data-subtype="o"] .en_item_bullet_actived>.protyle-action::after { background-color: var(--b3-theme-primary); } [data-subtype="t"] .en_item_bullet_actived>.protyle-action--task, [data-subtype="t"] .en_item_bullet_actived>.protyle-action--task::before, [data-subtype="t"] .en_item_bullet_actived>.protyle-action--task::after { color: var(--b3-theme-primary) !important; }
js 代码:
allListItemNode = [] document.addEventListener('selectionchange', () => { const selection = window.getSelection() if (!selection.rangeCount) { return } const range = selection?.getRangeAt(0) const startNode = range?.startContainer let currentNode = startNode allListItemNode.forEach((node) => { node.classList.remove('en_item_bullet_actived') node.classList.remove('en_item_bullet_line') }) allListItemNode = [] while (currentNode) { if (currentNode?.dataset?.type === 'NodeListItem') { allListItemNode.push(currentNode) } currentNode = currentNode.parentElement } for (let i = 0; i < allListItemNode.length - 1; i++) { const currentNode = allListItemNode[i] const currentRect = currentNode.getBoundingClientRect() const nextNode = allListItemNode[i + 1] const nextRect = nextNode.getBoundingClientRect() const height = currentRect.top - nextRect.top currentNode.style.setProperty('--en-bullet-line-height', `${height}px`) currentNode.classList.add('en_item_bullet_line') } allListItemNode.forEach((node) => { node.classList.add('en_item_bullet_actived') }) })
-
在使用“双向链接时代的快速无压记录”笔记法 过程中的一个问题需求
2025-02-23 23:30使用反链过滤面板插件能实现一层反链传递:在 A 中引用 C,然后设置筛选面板的
定义块范围=引用其他文档的定义块
,就能使 C 的反链出现在 A 的反链面板中。B 同理。 -
给松鼠症们的笔记流,自由自在地囤积碎片笔记吧
2025-02-10 23:26Daily Note 本身是用来打破“必须在现有结构里填充新内容”的输入方法,将“考察现有笔记体系 → 定位合适位置 → 写入新内容”调整为“写入新内容 → 关联现有信息”,将输入以外的处理置后从而解放输入环节。思源手机端过于沉重了在轻量化输入方面其实不太合格,启动太费劲,最好还是搭配个能多端同步的快速记录工具比如语雀幕布 flomo 等。
解放输入大概率会导致笔记体量增加,当体量膨胀到一定程度时可能使得定位特定内容变困难。在记忆范围内的还能用搜索直达,而当记忆模糊导致搜索成为非完备信息提取时,就有必要通过关联信息属性增加与笔记关联的信息维度,从而增加找到符合指定规则的笔记集合的维度。添加双链、标签、数据库都是增加笔记的信息标签,从而只需要记住这些信息标签,有一个信息标签就能汇总所有相关笔记。这大概对应文中的初级整理,增强笔记可检索性。
当信息标签也膨胀到一定程度时同样可能会使定位笔记变困难,此时就要将重要的信息标签组织起来建立导航入口,在宏观视角上显式罗列笔记内容结构。添加索引笔记 | MOC | 结构笔记都是搭建导航结构,这大概对应文中的中级整理,提升笔记检索效率。
当与特定信息标签关联的笔记膨胀到一定程度时可能使这方面的认知产生质变,原本的碎片笔记就不是孤立碎片而是成为某个更大的主题的素材了,此时可以考虑进行输入 → 整理 → 提取 → 表达中的最后一环,基于碎片化的小笔记发展更完整全面的大笔记,原始的笔记素材沉淀为背景区或不再保留。这大概对应文中的高级整理,用写作实践使用笔记,用使用实践整理笔记。
-
知识管理是“效率陷阱”,于是我打算放弃知识管理,拥抱任务管理
2025-02-08 15:40管理活动是要通过有效组织去实现目标的,如果进行管理的结果只是发展出一套管理系统在内部去折腾那当然毫无意义。知识管理容易使人陷进去就是因为它就是这样一种“自指性”知识,或者说知识管理的知识的「用法」就是「管理」,学习知识管理方法很容易将组织整理作为终点,这么做表明从一开始就没想清楚知识管理的需求。直到不管理就不能用了才有做管理的必要。
笔记不等于知识管理,也从来不是仅仅用于屯放资料的;它可以是打开外部资料的传送门,可以是规划任务的根据地,可以是与过去的内生灵感型信息的对话窗。整理笔记没用吗?如果我想提升写作水平,而笔记里是我个人萌生的想法,那么整理笔记等价于梳理思维,可见无意义的并不是整理笔记,而是漫无目的地整理,脱离需求地整理。
有困难的从来都是明确现实目标规划。给需求以工具,而不是给工具以需求。