https://orgmode.org/manual/Document-Structure.html#Document-Structure
Org是一个大纲视图。大纲允许文档按层次结构组织,对我来说,这是笔记和思想的最佳表示。
• Headlines: 如何组织org树的标题
• Visibility Cycling: 显示与隐藏
• Motion: 跳到另一个标题
• Structure Editing: 改变标题的结构和层次
• Sparse Trees: Matches embedded in context. 匹配在内容的嵌入项
• Plain Lists: 在条目中的额外结构
• Drawers: Tucking stuff away.
• Blocks: Folding blocks.
org-mode的一个很重要的特色是可以把大纲树里面被选择的信息组织成稀疏树,这样条目文档将折叠,但是被选择项被突出
C-c / (org-sparse-tree)
这将提示您输入一个额外的键来选择稀疏树创建命令。
C-c / r 或 C-c / / (org-occur)
提示输入正则表达,然后显示出所有匹配的稀疏树。
如果匹配到标题,标题显示
如果匹配到内容,标题和内容显示
所有继承关系的标题树都会显示出来
每一个匹配项高亮显示
当buffer通过编辑命令发生改变,或C-c C-c,高亮消失
C-u作为前缀时,即 C-u C-c / r 再次匹配 上一次匹配的高亮不会消失 因此可以堆叠使用此命令
M-g n or M-g M-n (next-error)
跳转到此buffer下一处匹配
M-g p or M-g M-p (previous-error)
跳转到此buffer上一处匹配
对于特定搜索字符串的常用稀疏树,可以使用变量org agenda自定义命令定义对特定稀疏树的快速键盘访问。然后可以通过agenda调度器访问这些命令(请参见agenda调度器)。例如:
(setq org-agenda-custom-commands
'((“f” occur-tree “FIXME”)))
定义快捷键f,创建一个稀疏树,匹配字符 ‘FIXME’
其他稀疏树命令根据TODO关键字、标记或属性选择标题,本手册后面将对此进行讨论。
要打印稀疏树,可以使用Emacs命令ps-print-buffer-with-faces,不打印文档的不可见部分。或者可以使用命令 C-c C-e C-v只导出文档的可见部分并打印结果文件。
在大纲树的一个条目中,手工格式的列表可以提供额外的结构。
属于同一列表的项在第一行必须具有相同的缩进。特别是,如果一个有序的列表达到数字“10”,则两位数的数字必须与列表中的其他数字左对齐。一个项目在下一行之前结束,该行的缩进量小于或等于其项目符号/编号。
每当每个项目结束时,列表就结束,这意味着在任何行之前缩进的行比顶层的项目少或相等。它也在两个空行之前结束。在这种情况下,所有条目都将闭合。下面是一个例子:
* Lord of the Rings
My favorite scenes are (in this order)
1. The attack of the Rohirrim
2. Eowyn's fight with the witch king
+ this was already my favorite scene in the book
+ I really like Miranda Otto.
3. Peter Jackson being shot by Legolas
- on DVD only
He makes a really funny face when it happens.
But in the end, no individual scenes matter but the film as a whole.
Important actors in this film are:
- Elijah Wood :: He plays Frodo
- Sean Astin :: He plays Sam, Frodo's friend. I still remember him
very well from his role as Mikey Walsh in /The Goonies/.
Org通过调整填充和包装命令来正确处理这些列表,并通过正确地导出它们来支持这些列表(请参见导出)。由于缩进控制着这些列表的结构,许多结构构造,如 ‘#+BEGIN_’ blocks可以缩进以表示它们属于某个特定的项。
有时您希望将信息与条目关联,但通常不希望看到它。为此,组织模式有抽屉。除了标题和另一个抽屉,它们可以包含任何东西。抽屉是这样的:
** This is a headline
Still outside the drawer
:DRAWERNAME:
This is inside the drawer.
:END:
After the drawer.
调用函数:org-insert-drawer
快捷键: C-c C-x d
如果有选中区域,它会将选中的区域都放到抽屉内
如果有前缀参数,它将会调用org-insert-property-drawer,它在当前标题的正下方创建一个“PROPERTIES”抽屉。Org模式使用这个特殊的抽屉来存储属性(参见properties和Columns)。你不能用它来做其他事情。
也可以使用M-TAB完成抽屉关键字。
一般系统的M-TAB是切换窗口,请用C-M-i 或 ESC TAB替代
标题上的可见性循环(请参见可见性循环)隐藏并显示条目,但保持抽屉折叠为一行。为了查看抽屉内部,您需要将点移动到抽屉线并在那里按TAB键。
你也可以将状态变更记录(见跟踪待办事项状态变化)和时钟时间(请参阅计时工作时间)存储在“LOGBOOK”抽屉中。如果要以与状态更改类似的方式在其中存储快速便笺,请使用
C-c C-z
添加一个时间戳到 LOGBOOK 抽屉
Org模式使用“#+BEGIN”…“#+END”块用于各种目的,从包括源代码示例(参见文本示例)到捕获时间日志信息(请参见计时工作时间)。按“#+BEGIN”行中的TAB键可以折叠和展开这些块。还可以通过配置变量org-hide-block-startup或在每个文件的基础上使用以下配置
#+STARTUP: hideblocks
#+STARTUP: nohideblocks
不应该进行makeup的文字示例。此类示例在等宽字体中排版,因此非常适合源代码和类似示例。
#+BEGIN_EXAMPLE
Some example from a text file.
#+END_EXAMPLE
但是,有一个限制。
您必须在以"# *"这些前面加‘,’,因为它们可能被解释为大纲节点或某些其他特殊语法。每当组织访问该块的内容时,它都会透明地剥离这些附加的逗号。
#+BEGIN_EXAMPLE
,* I am no real headline
#+END_EXAMPLE
为简化起见,在使用小示例时,您还可以在示例行中以冒号和空格开头。冒号之前可能还会有其他空格:
Here is an example
: Some example from a text file.
如果该示例是来自编程语言的源代码,或者是可以由Emacs中的Font Lock标记的任何其他文本,则可以要求该示例看起来像字体化的Emacs缓冲区。这是通过代码块完成的,在该代码块中,您还需要指定用于对示例进行字体化的主要模式的名称,有关轻松插入代码块的快捷方式,请参见结构模板。
#+BEGIN_SRC emacs-lisp
(defun org-xor (a b)
"Exclusive or."
(if a (not b) b))
#+END_SRC
同时在 ‘例’和’src’片段,您可以添加’-n’切换到’#+开始’行,以获取示例编号的行。’-n’带有一个可选的数字参数,用于指定块的起始行号。如果您使用“+ n”开关,则从前一个编号摘要开始的编号在当前编号中继续。’+ n’开关也可以接受数字参数。这会将参数的值添加到上一个块的最后一行,以确定起始行号。
#+BEGIN_SRC emacs-lisp -n 20
;; This exports with line number 20.
(message "This is line 21")
#+END_SRC
#+BEGIN_SRC emacs-lisp +n 10
;; This is listed as line 31.
(message "This is line 32")
#+END_SRC
在文字示例中,Org将字符串解释为“(ref:name)‘作为标签,并使用它们作为特殊超链接(例如’[[(名称)]]’-即,用单括号括起来的参考名称。在HTML中,将鼠标悬停在这样的链接上可以远程突出显示相应的代码行,这很酷。
您还可以添加一个“-r开关,从源代码115删除标签。与“-n切换时,这些引用的链接由代码清单中的行号标记。否则,链接将使用不带括号的标签。这是一个例子:
#+BEGIN_SRC emacs-lisp -n -r
(save-excursion (ref:sc)
(goto-char (point-min)) (ref:jump)
#+END_SRC
In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
jumps to point-min.
在[[(sc)]行中,我们记住当前位置。[[(jump)] [Line(jump)]]
跳到最小点。
可以缩进源代码和示例,以使其与周围的文本很好地对齐,尤其是与纯列表结构(请参见“纯列表”)对齐。默认情况下,Org仅保留行之间的相对缩进,例如,在导出块内容时。但是,您可以使用“-一世如果需要的话,也要保留全局缩进。请参阅编辑源代码。
如果标签格式的语法与语言语法冲突,请使用“-l’例如,切换以更改格式
#+BEGIN_SRC pascal -n -r -l "((%s))"
另请参见变量org-coderef-label-format。
HTML导出还允许将示例发布为文本区域(请参见 HTML export中的文本区域)。
因为#+BEGIN’ … ‘#+END’模式需要经常添加,因此提供了一种快捷方式(请参见“ 结构模板”)。
C-c ' (org-edit-special)
在本机模式下的点处编辑源代码示例。这可以通过使用源代码切换到临时缓冲区来实现。您需要C-c '再次按退出。然后,编辑后的版本将替换组织缓冲区中的旧版本。使用艺术家模式116编辑固定宽度区域(每行以冒号开头,后跟一个空格),以便轻松创建ASCII绘图。在空行中使用此命令将创建一个新的固定宽度区域。
在创建带有 提示标签的临时缓冲区中编辑源代码示例时调用org-store-link(请参阅处理链接)C-c ‘。确保它在当前缓冲区中是唯一的,并以正确的格式(例如“(ref:标签)在当前行的末尾。然后标签存储为链接’(标签)’,用于使用进行检索C-c C-l。
计时工作时间
组织模式允许您记录在项目中用于特定任务的时间。当您开始处理项目时,可以开始计时。当您停止执行该任务或将任务标记为完成时,时钟将停止并记录相应的时间间隔。它还计算花费在项目的每个子树上的总时间。它可以记住历史或最近记录的任务,您可以在吸收任务时间的多个任务之间快速跳转。
要保存Emacs会话中的时钟历史记录,请使用:
(setq org-clock-persist 'history)
(org-clock-persistence-insinuate)
在恢复Emacs之后进入新任务时,将检索不完整的时钟72(请参阅解决空闲时间(1)),并提示您如何处理。
• 时钟命令: 启动和停止时钟。
•时钟表: 详细的报告。
• 解决空闲时间: 空闲时的解决时间。
C-c C-x C-i (org-clock-in)
启动当前项目的时钟(时钟输入)。这会插入“时钟’关键字以及时间戳记。如果这不是该项目的第一个时钟,则倍数“时钟’线被包裹成’日志簿抽屉(另请参见变量org-clock-into-drawer)。您还可以通过设置“CLOCK_INTO_DRAWER’ 要么 'LOG_INTO_DRAWER的财产。使用C-u前缀参数调用时,请从最近计时的任务列表中选择任务。使用两个C-u C-u 前缀,在该点处进入任务,并将其标记为默认任务;d选择时钟任务时,默认任务始终带有字母 。使用三个C-u C-u C-u前缀,通过在最后一个时钟停止时启动时钟来强制进行连续计时。
当时钟运行时,Org在模式行中显示当前时钟时间,以及任务标题。显示的时钟时间是该任务及其子任务的所有时间。如果任务具有工作量估算值(请参阅“ 工作量估算值”),则模式行将显示当前的时钟时间73。如果任务是重复任务(请参见重复任务),请仅显示自上次重置任务以来的时间。您可以使用“CLOCK_MODELINE_TOTAL"属性。它可能具有值“当前“仅显示当前的时钟实例,”今天以显示当前执行此任务的所有时间-另请参阅变量org-extend-today-until,all以包括所有时间,或auto默认值为75。单击with mouse-1进入模式行条目会弹出一个带有时钟选项的菜单。
C-c C-x C-o (org-clock-out)
停止时钟(超时)。这样会在上次启动时钟的同一位置插入另一个时间戳。它还会直接计算结果时间,并将其插入时间范围后的时间范围内为“=> HH:MM’。参见变量org-log-note-clock-out以记录附加注释以及超时时间戳的可能性。
C-c C-x C-x (org-clock-in-last)
重新计时最后一个计时的任务。使用一个C-u前缀参数,从时钟历史记录中选择任务。使用两个 C-u前缀,通过在最后一个时钟停止时启动时钟来强制执行连续时钟。
C-c C-x C-e (org-clock-modify-effort-estimate)
更新当前时钟任务的工作量估计。
C-c C-c or C-c C-y (org-evaluate-time-range)
更改时间戳之一后,重新计算时间间隔。仅在直接编辑时间戳时才需要。如果使用S-键更改它们,则更新是自动的。
C-S-UP (org-clock-timestamps-up)
C-S-DOWN (org-clock-timestamps-down)
在CLOCK日志行上,同时增加/减少时间戳,以使时钟持续时间保持相同的值。
S-M-UP (org-timestamp-up)
S-M-DOWN (org-timestamp-down)
On ‘CLOCK’ log lines, increase/decrease the timestamp at point and the one of the previous, or the next, clock timestamp by the same duration. For example, if you hit S-M-UP to increase a clocked-out timestamp by five minutes, then the clocked-in timestamp of the next clock is increased by five minutes.
在 ‘CLOCK’日志行中,将点处的时间戳和上一个或下一个时钟时间戳之一的时间戳增加/减少相同的持续时间。例如,如果您用 S-M-UP 想将已计时的时间戳记增加五分钟,则下一个时钟的已计时的时间戳记将增加五分钟。
C-c C-t (org-todo)
如果项目在同一项目中运行,则将其TODO状态更改为DONE会自动停止时钟。
C-c C-x C-q (org-clock-cancel)
取消当前时钟。如果时钟是错误启动的,或者您结束了其他工作
C-c C-x C-j (org-clock-goto)
跳至当前已计时任务的标题。使用C-u前缀参数,从最近计时的任务列表中选择目标任务。
C-c C-x C-d (org-clock-display)
显示当前缓冲区中每个子树的时间摘要。这会在每个标题的末尾放置叠加层,显示该标题下记录的总时间,包括所有子标题的时间。您可以使用可见性循环来研究树,但是当您更改缓冲区(请参阅变量org-remove-highlights-with-change)或按时,覆盖会消失 C-c C-c。
l可用于agenda(请参阅每周/每日议程),以显示一天中完成或关闭了哪些任务。
重要:请注意,org-clock-out和org-clock-in-last 都可以具有全局键绑定,并且不能修改窗口的布置。