比如我现在在org-mode中学习emacs的
C-c C-c [[这里面我想链接到 C-h k C-c C-c RET后的页面]]
要怎么写
比如我现在在org-mode中学习emacs的
C-c C-c [[这里面我想链接到 C-h k C-c C-c RET后的页面]]
要怎么写
你可以在链接中塞入elisp命令
[[elisp:(describe-key (kbd "C-c C-c"))][C-c C-c]]
前提是你没有改动当前 C-c C-c 的绑定。
如果你改绑定了,可以用
[[elisp:(describe-function 'org-ctrl-c-ctrl-c)][org-ctrl-c-ctrl-c]]
update:
如楼下所说,显然使用org-store-link
是更符合org工作流的方法
在HELP BUFFER里,你可以尝试使用命令org-store-link
来存储一个当前位置的链接,然后在你想要插入链接的地方再使用org-insert-link
来插入你之前存储的链接。
对于你的例子,org-store-link
生成的链接是
help:org-ctrl-c-ctrl-c
插入的链接文本是
[[help:org-ctrl-c-ctrl-c][link to C-c C-c]]
感觉这个方法要比前面A7R7描述的方法更通用一些,可以用在HELP BUFFER以外的地方。
用 org-store-link
更好。
事实上,你可以为任何 buffer 创建一个 link ,比如说 help 链接的实现就非常简单:
(defun org-link--open-help (path _)
"Open a \"help\" type link.
PATH is a symbol name, as a string."
(pcase (intern path)
((and (pred fboundp) function) (describe-function function))
((and (pred boundp) variable) (describe-variable variable))
(name (user-error "Unknown function or variable: %s" name))))
(defun org-link--store-help ()
"Store \"help\" type link."
(when (eq major-mode 'help-mode)
(let ((symbol
(save-excursion
(goto-char (point-min))
;; In case the help is about the key-binding, store the
;; function instead.
(search-forward "runs the command " (line-end-position) t)
(read (current-buffer)))))
(org-link-store-props :type "help"
:link (format "help:%s" symbol)
:description nil))))
(org-link-set-parameters "help"
:follow #'org-link--open-help
:store #'org-link--store-help)
这样做更契合 org 的工作流,比如说方便后续导出的处理等。
这个是自己写的插件?
这是 org 内置的,更多的链接类型可以看 External Links (The Org Manual)
我的意思是增加新的链接类型很方便,只需要用 org-link-set-parameters
就好了。
明白了,谢谢大佬