目 录CONTENT

文章目录

1.2.11.[Obsidian][插件][界面]工作区

克林空间
2024-01-30 / 0 评论 / 0 点赞 / 24 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-01-30,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Obsidian 让你可以随时配置哪些内容对你可见。在不需要文件浏览器时将其隐藏,并排显示多个文档,或者在处理文档时显示文档大纲。应用程序窗口中可见内容的配置称为工作区。

工作区是以 树形数据结构 的形式实现的,其上的每个节点都被称为 工作区项。工作区项有两种类型: 父节点 和 叶子节点。主要区别在于父节点可以包含子节点或其他父节点,而叶子节点则不能包含任何其它节点。

父节点分为两种类型,即 splits 和 tabs,它们决定了如何向用户展示子项:
split和tabs

  • split会沿垂直或水平方向逐个排列其子项。
  • tabs每次只显示一个子项目,并隐藏其他项目。

工作区下有三个特殊的split:left、right和root。下图是一个典型工作区的示例:

特殊split

叶子是一个窗口,可以以不同方式显示内容。叶子的类型决定显示内容的方式,并与特定视图相对应。例如,类型为 graph 的叶子对应显示graph view

Splits

默认情况下,root split 的排列方向为垂直方向。为其创建新叶子节点时,Obsidian 会在用户界面中创建一个新列。拆分叶子节点时,拆出的叶子节点会添加到新的split中。虽然根分隔项下可创建的层级数量没有明确限制,但实际上每多一个层级,其实用性就会减弱。
root_split

left和right splits的工作方式略有不同。在侧边栏中拆分叶子时,Obsidian 会生成一个新的tabs,并将新叶子添加到它下面。实际上,这意味着它们在任何时候都只能有三层工作区项,而且直接子项必须是tabs。
left_right

检查工作区

您可以通过 App 对象访问工作区。下面的示例将打印工作区中每个叶的类型:

import { Plugin } from "obsidian";

export default class ExamplePlugin extends Plugin {
  async onload() {
    this.addRibbonIcon("dice", "Print leaf types", () => {
      this.app.workspace.iterateAllLeaves((leaf) => {
        console.log(leaf.getViewState().type);
      });
    });
  }
}

Leaf 生命周期

插件可以向工作区添加任何类型的叶子节点,也可以通过自定义[[视图]]定义新的叶子节点类型。以下是向工作区添加叶子节点的几种方法。有关更多方法,请参阅工作区。

  • 如果要在root split中添加新叶,请使用 getLeaf(true)
  • 如果要在任何侧边栏中添加新的叶子节点,请使用 getLeftLeaf() 和 getRightLeaf()。这两种方法都可以让你决定是否将叶子添加到新的split中。

您也可以使用 createLeafInParent() 将叶子明确添加到您选择的split中。

除非明确移除,否则插件添加到工作区的叶子节点即使在插件禁用后也会保留。插件有责任删除它们添加到工作区的叶子节点。

要从工作区移除叶子节点,请在要移除的叶子节点上调用 detach()。您也可以使用  detachLeavesOfType() 移除某一类型的所有叶子节点。

Leaf 组

您可以使用 setGroup() 将多个叶子分配给同一个组,从而创建linked panes 。

leaves.forEach((leaf) => leaf.setGroup("group1");
0

评论区