什么是内容块
思源笔记的编辑能力基于块。
一段文本、一个列表项、一个图片、一个文件等等,都被称为“块”。
不同的块承担不同的角色,组合在一起,像乐高玩具一样,就组成了一篇文章或者一个主页,具体一个页面是什么,取决于你怎么组合这些“块”。
文档本身也是一种内容块,更准确地说,文档块、列表块、引述块这三种内容块是容器块,他们可以包含其他任意类型的内容块。
至此,我们已经能够用内容块来描述所有的内容了,这样就能通过统一的用法来链接内容块了。
逻辑上没有页面(Page
)概念,减少使用中不必要的负担,让用户将注意力集中在内容上。
内容块定义
内容块指的是一块内容,每个块都有全局唯一的 ID
进行标识(就像身份证号码一样)。ID
是程序自动生成的,形如: 202008250000-a1b2c3d
,由时间和 7 位随机字符组成。
右击块标 → 复制 → 复制 ID
可以获取 ID
到剪贴板。
命名和备注
我们可以为每个内容块命名、添加别名和备注。
命名和别名主要用于反链提及搜索,备注用于记录一些不便在内容区中出现的信息。
在 设置 - 编辑器 中打开显示书签、命名、别名标识选项后,被命名的内容块在编辑器中会被加上外框显示。
如果对文档块进行命名和备注,则当鼠标悬浮文档树文档上时将浮出该文档的相关命名和备注信息。
可使用嵌入内容块对命名和备注进行搜索汇总,比如列出备注中包含 简短 关键字的内容块
注意:
- 命名是唯一的,一个块只能设置一个命名
- 别名可以设置多个,通过英文状态下的逗号(,)分隔
- 备注仅支持纯文本
内容块类型
鼠标悬浮在内容块上,左侧会出现该内容块对应的图标。
内容块在逻辑上分为叶子块和容器块,叶子块不能包含其他块,容器块可以包含其他块:
- 列表块:只能包含列表项块
- 列表项块:可以包含任意非文档块
- 引述块:可以包含任意非文档块
- 超级块:可以包含任意非文档块
- 文档块:可以包含任意非文档块
常见的块
段落块
普通的一段文字,就是一个段落块。默认的空行也是段落块。段落块是最基础的块。
编辑时,按下enter
(回车键)总是会生成新的段落块,按下shift + enter
则可以在同一个段落块中进行换行。
段落块内文字可以在块标 右键菜单中 → 布局 选择居左, 居中, 居右, 两侧对齐显示.
同时也可以使用快捷键操作居左 (Alt+L
)居中 (Alt+C
)居右 (Alt+R
)
标题块
标题是一段加粗着重的文本,标题主要分为六个层级
-
使用快捷命令创建标题 /h1 /h2 /h3 /h4 /h5 /h6 回车创建一个标题
-
使用Markdown语法创建标题
在行首输入 # space创建一个主标题(H1)
在行首输入 ## space创建一个大标题(H2)
在行首输入 ### space创建一个中标题(H3)
在行首输入 #### space创建一个小标题(H4)
在行首输入 ##### space创建一个中标题(H5)
在行首输入 ###### space创建一个小标题(H6) -
使用快捷键在6种标题间互相转换
ctrl + alt + 1 将当前块转换为主标题(H1);
ctrl + alt + 2 将当前块转换为大标题(H2);
ctrl + alt + 3 将当前块转换为中标题(H3);
ctrl + alt + 4 将当前块转换为小标题(H4);
ctrl + alt + 5 将当前块转换为中标题(H5);
ctrl + alt + 6 将当前块转换为小标题(H6);
不建议在正文中使用一级标题,建议使用二级标题作为顶层标题,这样在开启了 设置 - 导出 - 添加文档标题 后,整体的标题层级在导出时才符合正常逻辑。
点击块标边上的小三角可以切换 折叠 和 展开 的状态。折叠状态下会将标题下的内容折叠起来。
在思源笔记中, Alt + 点击 块标可以折叠任何块
有序列表块
“有序列表”,在每一个列表项之前会有一个递增的数字。
下面是一个有序列表的示例:
- 力是改变物体运动状态的原因
- 力使物体获得加速度
- 力是物体间的相互作用
同时,有序列表和无序列表 一样,支持缩进结构来进一步分清层次结构,在需要缩进的行按 tab
键即可缩进。
需要注意的是,一个缩进的块将会变成上一个块的子块,结成一组,当你拖动父块的时候,整组都会被一起拖动。
当你在父块上选择拷贝副本的时候,整组也会被一起拷贝。而当你取消缩进时,结组关系被破坏,两个块重新成为平级的块。
下面是一个带有缩进的有序列表示例:
在行首输入 数字 . space
创建一个数字列表项,若在某个数字列表项下方,应输入下一个数字方能转换。
需要注意的是,如果紧邻的上一行也是数字列表项,那么你必须输入下一个递增的整数,才能自动转换。
输入 /yxlb 、/有序列表 /number
回车创建一个数字列表项。
无序列表块
无序列表,一般用于展示对顺序不敏感的列表项。
这是一个典型的列表
- 苹果
- 香蕉
- 橙子
- 葡萄
- 草莓
无序列表支持缩进结构来进一步分清层次结构,在需要缩进的行按 tab
键即可缩进。
需要注意的是,一个缩进的块将会变成上一个块的子块,结成一组,当你拖动父块的时候,整组都会被一起拖动。
当你在父块上选择拷贝副本的时候,整组也会被一起拷贝。而当你取消缩进时,结组关系被破坏,两个块重新成为平级的块。
在行首输入 *
或 -
跟随空格,快速创建一个列表项
输入 /wxlb 或 /无序列表 或 /unordered list
回车创建一个列表项。
通过鼠标拖动列表的块标可以调整列表项的顺序和层级。当拖动具有子级的列表项时,子级将跟随父级一起改变。
任务列表块
“任务列表” 可以用来记录任务或者事项的完成情况。
下面是一个待办列表的示例:
同时,任务列表也跟 “无序列表”、“有序列表” 一样,支持缩进结构来进一步分清层次结构,在需要缩进的行按 tab
键即可缩进。
需要注意的是,一个缩进的块将会变成上一个块的子块,结成一组,当你拖动父块的时候,整组都会被一起拖动。
当你在父块上选择拷贝副本的时候,整组也会被一起拷贝。而当你取消缩进时,结组关系被破坏,两个块重新成为平级的块。
在行首输入 []
(中英文都可以),即可创建一个待办列表项。
输入 /rwlb 、 /todo 或 /任务列表
回车创建一个待办列表项。
引述块
引述块是一种容器
数学公式块
数学公式块用于显示一个或多个公式。
公式使用 LaTeX
语法,语法详情可参考LaTeX数学公式语法。
通过输入 /gsk 或 /math 或 /公式
回车都可以快速创建一个数学公式块。
或者通过 Markdown
语法快速创建一个数学公式块,在行首输入 $$
创建一个数学公式
输入公式时,使用enter
换行输入,按 ctrl + enter
可以确认完成。
代码块
代码片段用于显示一段代码(不建议单个代码片段放大量代码)。
通过输入 /dmk 或 /code
回车快速创建一个代码片段。
也可以通过 Markdown语法,在行首输入 ``` (数字1左边的键) lang+ enter 创建指定语言的代码片段。
例如:```html 回车,即可创建一个HTML代码片段。
点击代码块左上角可以选择或手动输入代码语言
可以选择开启或者关闭自动换行。
开启“自动换行”后,代码将会在可视区域内自动换行,如果关闭则不再自动换行,此时如果一行代码过长,代码片段将会出现横向滚动条。
可以选择开启或者关闭代码连字。
代码连字会根据当前语法规则,将一些组合操作符进行连字显示,这样能更容易分辨操作符语义。注意:代码连字仅为字体渲染特性,不会更改任何字符。
可以选择开启或关闭显示行号。
表格块
表格功能可以帮助你在思源笔记中更清晰、结构化地展示内容,让读者更容易理解和阅读信息。
以下是一个简单表格的示例:
通过使用这种格式,你可以有效地组织和展示各种信息,无论是数据、任务列表还是其他类型的内容。
- 在空行中输入 /,在菜单中选择“表格”即可;
- 输入/bg、/table 或 /biaoge 回车后都能创建一个表格
- 使用快捷键 ctrl+o
基础功能:
- 插入行/列
- 合并单元格:划选需要合并的多个单元格,右键唤出菜单,点击 合并单元格 即可。
- 拆分单元格:选择需要拆分的合并单元格,右键唤出菜单,点击更多 → 拆分单元格;拆分后,默认保留全部内容至首个单元格,新的单元格内容为空。
超级块
超级块是一种容器块。
可用于组合文档内连续的内容块,也用于支持水平布局和垂直布局。做到类似于分栏的效果。
方法1
选择两个块后,鼠标右击选择合并超级块,选择水平布局或垂直布局
方法2
鼠标点击块标,将块标拖动到另一个块标的右侧即可
分割线
分割线用于在文本之间或者页面各部分之间进行分割。
在行首输入 ---
,创建一条分割线
输入 /fgx 或 /div
回车创建一条分割线。
文本中插入emoji
你可以在编辑时随时插入Emoji
表情。
通过输入冒号 :
(英文符号) ,接着输入表情描述的英文、中文、中文全拼或全拼首字母,即可找到相应表情。选中表情后鼠标点击或者直接按回车即可将表情插入当前位置。
也可以使用 /bq , /emoji , /biaoqing 或 /表情
,即可唤起表情选择窗口插入Emoji
表情
Windows
系统也可以通过快捷键win + .
或者 win + ;
打开系统Emoji
表情窗口。
文档块
整个文档是一个块,文档块是一种容器块。
列表项块
通过列表项块可以实现大纲式笔记的基本用法,列表项块是一种容器块。
列表项块被包含在列表块内,相邻的列表项块间距较小。
HTML块
-
使用 HTML 块时默认会对其中的代码进行安全过滤,如果不需要过滤,请开启 设置 → 编辑器 → 允许执行 HTML 块内脚本,但请确认代码安全后再开启,以免遭遇跨站脚本攻击(XSS)
-
因为 Markdown 规范对 HTML 块解析规则较为复杂,建议使用
包裹 HTML 代码并去掉空行
引用内容块
输入((
后触发内容块引用搜索,继续输入作为搜索关键字,在搜索结果中使用上下键选定后回车就可以完成内容块的引用了。
建立好内容块引用后,鼠标悬浮在锚文本上后将弹出预览浮层,展现被引用的内容块(定义块)。
链接方向
- 正向链接(Forwardlink),即当前内容块使用了哪些其他内容块
- 反向链接(Backlink),即当前内容块被那些其他内容块使用了
正向链接包含在当前块的内容中,我们可以很直观的看到。
反向链接需要在其他文档中搜索才能知道,而恰恰是这些信息对我们比较有价值。
我们可以通过以下两种方式来帮助我们更好的掌握知识点或者发散思路:
- 关系图:浏览内容块之间的正向和反向链接关系
- 反向链接:以文本列表的方式展现当前内容块的反向链接
锚文本
锚文本即渲染引用时看到的文本,分为静态锚文本和动态锚文本:
- 静态锚文本:不会跟随定义块内容变化,即固定展现指定的内容
- 动态锚文本:跟随定义块内容变化,最大长度可在 设置 → 锚文本 → 块引动态锚文本最大长度中设置,最长支持 5120 个字符
修改锚文本的方式如下:
- 将光标插入符移入引用元素,直接修改内容,这样会将该引用的锚文本设置为静态锚文本
- 右键单击引用元素后在弹出的菜单中修改锚文本,这样得到的锚文本也是静态锚文本
- 右键单击引用元素后在弹出的菜单中清空锚文本,这样将使用动态锚文本
在 ((
搜索结果列表中:
直接 Enter
或者 点击 将使用动态锚文本
按住 Ctrl+Enter
或者 Ctrl+点击
将使用静态锚文本
筛选
在 设置 - 编辑器 中启用 [[ 仅搜索文档 后:
- 使用
((
在所有类型的块中进行搜索 - 使用
[[
仅搜索文档块
内容块属性
属性以键值对(key-value
)的形式存在,我们可以通过对内容块设置属性来丰富内容块的内涵。
属性分为内置属性和自定义属性。
内置属性 | 属性名 | 描述 |
---|---|---|
name | 内容块的命名 | |
alias | 内容块的别名 | |
memo | 内容块的备注 | |
bookmark | 内容块的书签 |
自定义属性
自定义属性由用户通过 块标菜单 - 属性 进行设置,属性名仅允许使用英文字母和阿拉伯数字(例如 doing、7days)。
设置后,思源会自动在属性名前加上前缀 custom-
,以区分内置属性和自定义属性。
嵌入内容块
嵌入内容块主要用于汇总所需内容块,通过 {{
和 }}
将 SQL
脚本包裹起来并独占一行:
{{ SELECT * FROM blocks WHERE content LIKE '%关键字%' }}
示例
- 查询内容中包含
内容块
的列表项:{{ SELECT * FROM blocks WHERE content LIKE '%内容块%' AND type = 'i' }}
- 查询内容中同时包含 内容块 和 引用 段落块:
{{ SELECT * FROM blocks WHERE content LIKE '%内容块%' AND content LIKE '%引用%' AND type = 'p') }}
- 查询内容中同时包含 内容块 和 嵌入 的标题块并按更新时间降序结果取前 2 条:
{{ SELECT * FROM blocks WHERE content LIKE '%内容块%' AND content LIKE '%嵌入%' AND type = 'h' ORDER BY updated DESC LIMIT 2 }}
案例1
查询同时包含 在思源中 和 核心概念 文本的段落块,并排除当前文档(否则当段落块也会包含到结果集中,因为当前段落同样包含了这两个文本,下面的案例类似):
SELECT * FROM blocks WHERE content LIKE '%在思源中%' AND content LIKE '%核心概念%' AND type = 'p' AND hpath NOT LIKE '%嵌入内容块%'
案例2
查询未完成的任务列表项,这里需要使用 markdown
字段而不是 content
字段:
SELECT * FROM blocks WHERE markdown LIKE '%[ ]%' AND subtype = 't' AND type = 'i' AND hpath LIKE '%公安局搬迁%'
案例3
有时候我们可能需要随机漫游显示内容块,以方便回顾
SELECT * FROM blocks ORDER BY random() LIMIT 3
案例4
查询同时包含标签 #内容块/嵌入# 和 #内容块/引用# 的段落块:
SELECT * FROM blocks WHERE (content LIKE '%#内容块/嵌入#%' OR content LIKE '%#内容块/引用#%') AND hpath NOT LIKE '%嵌入内容块%'
在内容块中遨游
链接
文档内容中的链接分为两种:
- 标准 URL 超链接,使用浏览器打开,用于互联网资源访问
- 通过引用建立的内容块链接,用于在思源内部进行双链
缩放聚焦
- 在块标上右键下拉菜单中选择聚焦后,编辑器会聚焦到该内容块上
- 通过编辑器顶部的面包屑导航能够在上下文中进行跳转
关系图
关系图分为文档级和全局。
文档的关系图是以当前文档块展开,并呈现所有和该文档有关联的(正向链接和反向链接)内容块;
全局关系图是所有笔记本中所有的块和链接关系。
按住 Ctrl
单击节点:跳转到该节点。
反向链接
反向链接是文档级的,列出当前文档中内容块被引用和被提及所在的块。
链接
- 鼠标悬浮块引用前面的标识会弹出预览浮窗
- 单击反链列表中的块引用进行跳转
提及
提及使用当前文档中内容块命名、别名、引用锚文本和文档名作为关键字进行搜索(可在 设置 → 搜索 → 反链提及 中设置搜索范围),搜索结果为包含这些关键字的内容块。
嵌入第三方应用
通过IFrame
,可以在思源笔记中轻松嵌入其它第三方应用(需第三方应用支持嵌入)。
在输入状态下键入/iframe
,选择 插入IFrame 链接 嵌入一个第三方应用。
输入一个允许被嵌入的应用内容网址(URL),例如B站视频的链接、CodePen的嵌入链接等等。
留言