乞丐哥的私房菜(Org 篇-- Emacs 中 Org 使用 Properties and Columns 节)

  • Emacs Version: 30.1
  • Org Version: 9.7.11
    此篇要求对 Emacs 有基本的了解。此节偏理念,虽然比较枯燥,还是快速浏览一下,切记。

Emacs Org Properties and Columns的简单使用

  • 一组相关联的键值对
    • 与间个条目相关联
    • 与树中的每个条目相关联
    • 与整个缓冲区相关联
  • 两大应用
    • 属性与标签类似,但有值
    • 使用properties在Org缓冲区实现基本的数据库
  • 属性可在列视图中编辑和查看

属性语法

  • 需要插入到一个特殊的标志(先这样称呼)里,并带有 “:PROPERTIES:”
  • 必须位于标题的正下方
  • 单独占一行
  • 键被冒号包围,值在后,键不区分大小写。
  * Article
  ** Type
  *** About Emacs
       :PROPERTIES:
       :Title:     About_Emacs
       :Author:    Beggar_Brother
       :Examine:   Baby
       :Publisher: Beggar_Brother
       :END:
  • 特殊属性的特点,形如:XXX_ALL
    • 继承性
    • 当值被定义时,设置相应的属性更加容易
    • 可以缓冲区(正在处理中的或要处理的缓冲区)级别插入
    • 第一个标题之前就可应用,且可被文件中所有条目继承
    • 定义的属性必须位于缓冲区顶部,上方只有注释
    :PROPERTIES:
    :Examine_ALL:     Baby Xiner
    :Publisher_ALL:   Beggar_Brother Sagegrow
    :END:

属性可如下的形式定义:

  #+PROPERTY: Examine Baby Xiner

如果想给已有的 PROPERTY 添加一个值,如下:

  #+PROPERTY: var foo=1
  #+PROPERTY: var+ bar=2

结果:property “var” 有了这样的值 “foo=1 bar=2”
可以为继承的属性添加值:

  * Article
  ** Type
       :PROPERTIES:
       :Collect:   ZhangSan
       :END:
  *** About Emacs
       :PROPERTIES:
       :Title:     About_Emacs
       :Author:    Beggar_Brother
       :Examine:   Baby
       :Publisher: Beggar_Brother
       :Collect+:  LiSi
       :END:

注意 :每个标志(抽屉)只能有一个条目

  • org-global-properties 的值被设定,可被 Org 文件中所有条目继承。
  • C-c C-x p (org-set-property) 设置一个属性,提示输入属性名和值
  • C-u C-x d (org-insert-drawer) 插入一个标志(抽屉)
  • C-c C-c (org-property-action) 万能的 C-c C-c 。自己体会
  • C-c C-c d (org-delete-property) 从当前的条目中移除一个 property
  • C-c C-c D (org-delete-property-globally) 从当前的文件的所有条目中移除一个 property
  • C-c C-c c (org-compute-property-at-point) 使用最近的列格式和操作符计算 point 的 property

特殊属性

  • 提供访问 Org 功能的方法,如待办事项或条目的优先级
  • 此接口可让在列视图中包含这些状态或者在查询中使用
  • 下面的属性名是特殊的,不应在属性标志(抽屉)中用作 key :
    • ALLTAGS 所有标签,包括继承的标签
    • BLOCKED 如果任务目录被子任务或兄弟姐妹任务阻塞
    • CATEGORY 条目的类别
    • CLOCKSUM 将每个子树的时间相加
    • CLOCKSUM_T 将今天每个子树的时间相加,必须先计算当前缓冲区中的值
    • CLOSED 这个条目是什么关闭的
    • DEADLINE 截止时间戳
    • FILE 该条目所在的文件名
    • ITEM 条目的标题
    • PRIORITY 条目的优先级,一个带有单个字母的字符串(回忆下)
    • SCHEDULED 时间安排/行程安排时间戳
    • TAGS 标题中直接定义的标签
    • TIMESTAMP 条目中的第一个活动 keyword-less 时间戳
    • TIMeSTAMP_IA 条目中的第一个不活动 keyword-less 时间戳
    • TODO 条目的 TODO 关键字

属性搜索

创建基于属性选择的稀疏树(不完全的树)和特殊列表,命令与标签搜索相同
后续章节,在实际使用中会记得更牢。

Property 继承

  • 父节点具有某种属性,子节点可继承这个属性
  • Org 默认不开启,出于搜索性能的考虑
  • 可通过设置 org-use-property-inheritance 开启
  • Org 某些属性的继承是硬编码,至少对于特殊应用来讲:
    • COLUMNS
      • COLUMNS 定义列视图的格式。
      • COLUMNS 被定义为列视图表的起点
      • 与在子树中启用列视图的位置无关
    • CATEGORY 对于议程视图,通过设置 “CATEGORY” 应用于整个子树
    • ARCHIVE “ARCHIVE” 可定义整个子树的归档位置
    • LOGGING “LOGGING” 可为条目或子树定义日志记录设置

列视图

  • 一个编辑和查看大纲树属性的好方法是在 Column View里面
  • 每个大纲节点会变成一个表的行
  • 列提供了对条目属性的访问权限

定义列

列定义范围

指定仅使用于特定树的格式,添加"COLUMNS"属性到指定树的顶部节点。例如:

  ** Top node for columns view
  :PROPERTIES:
  :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
  :END:

看看下面的例子:

    #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
  • 列定义是文档层次结构的一部分
  • 在第一层定义足够通用的列
  • 在更深或需要时可定义更具体的列
列属性

列定义设置列的属性,一般定义像这样:

  %[WITDH]PROPERTY[(TITLE)][{SUMMARY-TYPE}]

除百分号和 Property 名称外,其它部分为可选项,含义如下:

  • WITDH 用一个整数指定列的宽度
  • PROPERTY 应编辑的属性,允许使用表示源数据的特殊属性
  • TITLE 列的标题文本。如果省略,则使用属性名称
  • SUMMARY-TYPE 如果指定,父节点列值将从子节点中计算
    SUMMARY-TYPE 支持的类型请参阅手册第七章

使用列视图

  • C-c C-x C-c (org-columns)
    • 打开列视图
    • 如果光标在文件中的第一个标题之前,则整个文件都打开列视图,使用"#+COLUMNS"定义
    • 如果光标在大纲内部的某处,从光标开始的层次结构向下搜索(相同等级结构)"#+COLUMNS"定义格式的属性
    • 当找到一个列视图表时,将从包含"#+COLUMNS"属性的条目开始为树建立列视图表。
    • 当没有找到此类属性,则从"#+COLUMNS"行或变量 org-columns-default-format获取,
      并为当前条目及子树建立列视图
  • r 或 g 光标在列视图行上 (org-columns-redo)
    重新创建列视图,包括在缓冲区中进行的最新更改
  • C-c C-c 或 q 光标在列视图行上 (org-columns-quit)
    退出列视图
  • LEFT, RIGHT, UP, DOWN
    通过列视图,在字段之间移动
  • 1…9, 0
    直接选择允许的值(1.。9),0 选择第 10 个值。(在这里请记住一个"单词",Nth)
  • n or S-RIGHT (org-columns-next-allowed-value)
  • p or S-LEFT (org-columns-previous-allowed-value)
    切换到该字段的下一个/上一个允许的值。前提是您必须已经指定了属性的允许值
  • e (org-columns-edit-value)
    在光标处编辑属性。对于特殊,这将调用通常用于更改该属性的相同接口。
    例如:在编辑"TAGS"属性时,标签完成或快速选择接口(“窗口”)会弹出。
  • C-c C-c (org-columns-toggle-or-columns-quit)
    当光标所在处是一个 checkbox 时,使用时请注意
  • v (org-columns-show-value)
    查看此属性的全部值
  • a (org-columns-edit-allowed)
    • 编辑此属性的允许值列表
    • 如果在层次结构中找到该列表,则修改的值将存储在这里
    • 如果未找到列表,则新值存储在当前列视图的首个条目中
  • < (org-columns-narrow)
  • > (org-columns-widen)
    使列变窄或加宽一个字符
  • S-M-RIGHT (org-columns-new)
    插入一列,插入到当前列的左侧
  • S-M-LEFT (org-columns-delete)
    删除当前列
  • M-LEFT (org-columns-move-left)
    将当前列向左移动
  • M-RITHT (org-columns-move-right)
    将当前列向右移动
  • M-UP (org-columns-move-row-up)
    将当前行向上移动
  • M-DOWN (org-columns-move-row-down)
    将当前行向下移动

捕获列视图

由于列视图只是缓冲区上的一个覆盖层,因此不能直接导出或打印。如果想捕获列视图,使用一个"columnview"动态块。例如:

  * The column view
  #+BEGIN: columns :hlines 1 :id "label"
  #+END:
  • “:id”
    这个参数比较重要,允许的值:
    • “local”
      当前光标所在的树
    • “global”
      全局视图,包括文件中的所有标题
    • “file:FILENAME”
      在FILENAME文件的顶部运行列视图
    • “LABEL”
      在树上调用列视图,该视图具有带有值标签的"ID"属性
  • “:match”
    设置为一个串时,将其用作 tags/property 匹配过虑器
  • “:hlines”
    当为 t 时,在每行插入一个 Hline。当是一个数字 n 时,在每个标题之前使用级别 <= n 插入 Hline
  • “:vlines”
    当非 nil 时,强制列组获得垂直线
  • “:maxlevel”
    设置为数字时,请勿捕获低于此级别的条目
  • “:skip-empty-row”
    当非 nil 时,路过仅非空行
  • “:exclude-tags”
    从列视图中排除带有这些标签的条目
  • “:indent”
    当非 nil 时,根据级别缩进每个"ITEM"字段
  • “:link”
    当非 nil 时,链接"ITEM",将表中的标题与其来源对应起来
  • “:format”
    为动态块指定列属性
  • “:formatter”
    格式化列视图数据,并将其插入缓冲区
  • C-c C-c x (org-dynamic-block-insert-dblock)
    插入一个动态块,捕获列视图
  • C-c C-c (org-dblock-update)
    在光标所在处更新动态块,光标需要在动态块内
  • C-u C-c C-x C-u (org-update-all-dblocks)
    更新所有动态块

你可能感兴趣的:(Emacs,emacs,java,数据库,org)