org-mode 有一个鲜为人知的功能,那就是你可以用org-add-link-type 来自定义新的链接类型. 你可以用它来做很多事, 比如, 可以创建一种链接,点击这种链接就会在整个代码库中搜索指定的正则表达式.
(org-add-link-type
"grep" 'endless/follow-grep-link)
(defun endless/follow-grep-link (regexp)
"Run `rgrep' with REGEXP as argument."
(grep-compute-defaults)
(rgrep regexp "*" (expand-file-name "./")))
这样, 当你在org-mode下点击类似下面的链接时,你会看到一个搜索结果的列表.
** TODO Refactor [[grep:OldClassName][OldClassName]] into NewClassName
正如 /u/blue1_ 中所指出的, 若你新创建的链接仅仅是对URL做一些替换操作,那你还可以用 #+LINK headers
来实现.
#+LINK: isbn http://www.amazon.com/dp/%s
让我们来看看另一个使用场景, 下面代码定义了一种链接,它会搜索你的标题来查找特定的tags.
(org-add-link-type
"tag" 'endless/follow-tag-link)
(defun endless/follow-tag-link (tag)
"Display a list of TODO headlines with tag TAG.
With prefix argument, also display headlines without a TODO keyword."
(org-tags-view (null current-prefix-arg) tag))
然后你可以这一条这样的链接了
[[tag:work+phonenumber-boss][Optional Description]]
其中搜索的语法可以参见 这里, 与 org-tags-view 命令中的用法一样.