Org 支持指向文件、网站、新闻组与邮件、BBDB 数据库条目的链接, 以及 IRC 对话及其日志的链接。 外部链接是类 URL 定位符,以简短标识字符串开头,后跟冒号, 冒号后不能有空格。
以下是全部内置链接类型:
文件链接。文件名可以是远程路径、绝对路径或相对路径。
特殊情况:如果文件名完整(例如以 ‘./’ 或 ‘/’ 开头),可省略 “file” 前缀。
与文件链接相同,但指向附加到当前节点的文件与文件夹(见 Attachments)。 附件链接的行为与文件链接完全一致,只是路径相对于附件目录。
指向 BBDB 记录的链接,支持正则表达式补全。
指向使用 DocView mode 打开的文档,可指定页码。
通过数字对象标识符指向电子资源。
激活时执行一条 Elisp 命令。
指向指定 Emacs 邮件客户端中的邮件或文件夹。
在 ‘*Help*’ 缓冲区中显示符号的文档。
网页链接。
通过 ID 属性指向某个 Org 文件中的特定标题。
指向 Info 手册或特定节点。
指向 IRC 频道。
调用邮件撰写窗口。
新闻组链接。
激活时执行一条 shell 命令。
指向一组 Emacs Lisp 函数的简要文档汇总。 28
更多信息见 Name Help 和 Documentation Groups。
对于 ‘file:’ 和 ‘id:’ 链接,还可以用 ‘::’ 分隔,额外指定行号或文本搜索串。 在 Org 文件中,也可以直接指向标题名、自定义 ID 或代码引用。
下表展示了上述链接类型及其用法示例:
| Link Type | Example |
|---|---|
| http | ‘http://orgmode.org/’ |
| https | ‘https://orgmode.org/’ |
| doi | ‘doi:10.1000/182’ |
| file | ‘file:/home/dominik/images/jupiter.jpg’ |
| ‘/home/dominik/images/jupiter.jpg’ (同上) | |
| ‘file:papers/last.pdf’ | |
| ‘./papers/last.pdf’ (同上) | |
| ‘file:/ssh:[email protected]:papers/last.pdf’ (远程文件) | |
| ‘/ssh:[email protected]:papers/last.pdf’ (同上) | |
| ‘file:sometextfile::NNN’ (跳转到指定行号) | |
| ‘file:projects.org’ | |
| ‘file:projects.org::some words’ (文本搜索)29 | |
| ‘file:projects.org::*task title’ (标题搜索) | |
| ‘file:projects.org::#custom-id’ (按自定义 ID 搜索标题) | |
| attachment | ‘attachment:projects.org’ |
| ‘attachment:projects.org::some words’ (文本搜索) | |
| docview | ‘docview:papers/last.pdf::NNN’ |
| id | ‘id:B7423F4D-2E8A-471B-8810-C40F074717E9’ |
| ‘id:B7423F4D-2E8A-471B-8810-C40F074717E9::*task’ (标题搜索) | |
| news | ‘news:comp.emacs’ |
| mailto | ‘mailto:[email protected]’ |
| mhe | ‘mhe:folder’ (文件夹链接) |
| ‘mhe:folder#id’ (邮件链接) | |
| rmail | ‘rmail:folder’ (文件夹链接) |
| ‘rmail:folder#id’ (邮件链接) | |
| gnus | ‘gnus:group’ (组链接) |
| ‘gnus:group#id’ (文章链接) | |
| bbdb | ‘bbdb:R.*Stallman’ (正则匹配记录) |
| irc | ‘irc:/irc.com/#emacs/bob’ |
| help | ‘help:org-store-link’ |
| info | ‘info:org#External links’ |
| shortdoc | ‘shortdoc:text-properties’ |
| ‘shortdoc:text-properties::#get-pos-property’ | |
| shell | ‘shell:ls *.org’ (同步执行), ‘shell:inkscape&’ (异步执行) |
| elisp | ‘elisp:(find-file "Elisp.org")’ (待执行的 Elisp 表达式) |
| ‘elisp:org-agenda’ (交互式 Elisp 命令) |
除了这些内置链接类型外, ‘org-contrib’ 仓库还提供更多类型(见 Installation)。 例如,当你从 ‘org-contrib’ 加载对应库后, 即可使用指向 VM 或 Wanderlust 邮件的链接:
| ‘vm:folder’ | VM 文件夹链接 |
| ‘vm:folder#id’ | VM 邮件链接 |
| ‘vm://[email protected]/folder#id’ | 远程机器上的 VM |
| ‘vm-imap:account:folder’ | VM IMAP 文件夹链接 |
| ‘vm-imap:account:folder#id’ | VM IMAP 邮件链接 |
| ‘wl:folder’ | Wanderlust 文件夹链接 |
| ‘wl:folder#id’ | Wanderlust 邮件链接 |
关于自定义 Org 以添加新链接类型的说明,见 Adding Hyperlink Types。
链接应使用双层方括号包裹,并可包含显示用描述文本以替代 URL(见 Link Format),例如:
[[https://www.gnu.org/software/emacs/][GNU Emacs]]
如果描述文本是指向图片的文件名或 URL,HTML 导出(见 HTML Export)会将图片内嵌为可点击按钮。 如果完全没有描述文本且链接指向图片,该图片会直接嵌入到导出的 HTML 文件中。
Org 也能识别普通文本中的外部链接并将其激活。 如果链接中必须包含空格(例如 ‘bbdb:R.*Stallman’ ), 或需要消除链接结尾的歧义,可将链接用方括号或尖括号包裹。
可运行 ‘M-x shortdoc-display-group’ 查看所有已知文档组。
搜索的实际行为取决于变量 org-link-search-must-match-exact-headline :值为 nil 时执行模糊文本搜索;值为 t 时仅精确匹配标题(忽略空格与统计标记);值为 query-to-create 时先精确搜索标题,未找到则询问用户是否创建。