org mode的沧海遗珠

本文翻译自:https://yiufung.net/post/org-mode-hidden-gems-pt1/ https://yiufung.net/post/org-mode-hidden-gems-pt2/ 翻译过程中有节选,有增加的内容,建议大家还是去看原文。 作者是一位香港同胞,可以在他的主页上看到关于自己的介绍。

文档结构

避免隐藏区域编辑错误

可以编辑这个参数: org-catch-invisible-edits 这个参数有5种设置(直接复制自org的参数设置说明)

nil
Do not check, so just do invisible edits.
error
Throw an error and do nothing. 在…之后编辑的时候,在最下方会提示错误,不给编辑。
show
Make point visible, and do the requested edit. 会自动展开,让你完成编辑
show-and-error
Make point visible, then throw an error and abort the edit. 会自动展开,提示“user-error: Edit in invisible region aborted, repeat to confirm with text visible”再次输入任意字符会让你完成编辑。
smart
Make point visible, and do insertion/deletion if it is adjacent to visible text and the change feels predictable. Never delete a previously invisible character or add in the middle or right after an invisible region. Basically, this allows insertion and backward-delete right before ellipses. FIXME: maybe in this case we should not even show?

设置方法

(setq org-catch-invisible-edits 'show-and-error)

展开只显示标题

TAB 切换会在三个状态下显示

  1. 展开下一级
  2. 展开下层所有级
  3. 折叠

当我们展开下层所有级的时候,显示的内容会太多,这个时候就可以使用下面这个命令了。

org-kill-note-or-show-branches 这个命令可以只展开下层的所有标题,标题下的内容不会展开。默认绑定的键是 C-c C-k

自动复制标题,并添加递进时间戳

C-c C-x c , org-clone-subtree-with-time-shift 感觉即是自动展开重复任务

在折叠时隐藏子标题之间的空行

org-cycle-separator-lines (setq org-cycle-separator-lines 0)

普通标题转树

org-list-make-subtree (bound to C-c C-* ).

设置普通列表的bullets

(setq org-list-demote-modify-bullet '(("+" . "-") ("-" . "+") ("*" . "+")))

增加缩进

(setq org-list-indent-offset 1)

普通list加说明

- plain list1 :: 可以给这个list也加上说明,这样就可以解决不能给list加详细文本说明的办法。
- plain list2

表格相关

excel一样的复制粘贴

M-x org-table-copy-rectangle M-x org-table-cut-rectangle M-x org-table-paste-rectangle

表格转换

org-table-create-or-convert-from-region 从网页复制过来的表格进行转化。作者提到了可能有些minor mode,如whitespace mode会在粘贴过程中自动将TAB转换成空格,建议在转换前先禁用相关模式。

表格中的特殊符号

作者对 https://orgmode.org/manual/Advanced-features.html 的说明 进行了说明,因为个人认为实在没有必要在 org mode中进行复杂的表格计算。

链接

第三篇是关于链接的:https://yiufung.net/post/org-mode-hidden-gems-pt3/

内部链接

内容来自 Rainer König 的视频

使用 CUSTOM_ID

<<LinkTarget1>>

[[LinkTarget1]]

* 链接指向的标题

:PROPERTIES:
:CUSTOM_ID: LinkTarget2
:END:

[[#LinkTarget2]]

* LinkTarget3


[[LinkTarget3]]

这是3种内部链接形式,如果同时出现,优先级从1-3,从高到低。

如果在org文件中出现以下的内容

<<<org>>>

此时并不生效,如果在 <<<>>> 之间 C-c C-c ,那在这个文件中所有的 org 这个字符都将变为链接,并指向 <<<org>>> 这个地方。

https://orgmode.org/manual/Link-abbreviations.html

(setq org-link-abbrev-alist
  '(("bugzilla"  . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
    ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
    ("google"    . "http://www.google.com/search?q=")
    ("gmap"      . "http://maps.google.com/maps?q=%s")
    ("omap"      . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
    ("ads"       . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))

有了上述的定义之后,就可以直接使用

[[google:搜索的关键字][这个是一个google的例子]]

在页面内创建一个google搜索的例子。

海上一民工

Related