拷贝浏览器链接到 org-mode
文章目录
在 org-mode 里写博客文章时,经常会旁征博引一些链接,之前都是用 C-c C-l(org-insert-link)
的快捷键来输入链接,但这是个费事费力的事情,需要去浏览器里面拷贝两次,一次是链接,一次是标题,有没有更好地方式呢?答案是肯定的。不同浏览器做法大同小异,这里以 macOS 上的 Safari 与 Firefox 为例说明。
Safari
在 macOS 中,可以使用下面的 applescript 脚本来获取 org 格式的链接:
#!/usr/bin/osascript
# @raycast.title Copy URL as org-capture
# @raycast.packageName org-capture-url-safari
# @raycast.mode silent
# @raycast.schemaVersion 1
tell application "Safari"
set tab_link to URL of front document
set tab_title to NAME of front document
set org_link to ("[[" & tab_link & "]" & "[" & tab_title & "]]")
set the clipboard to org_link
display notification org_link with title "链接复制成功"
end tell
我这里封装成了 Raycast 中可以调用的格式。
Firefox
按理来说,Firefox 也可以参考 Safari 的做法,但是 Firefox 有个长达 20 年的 bug:
因此只能另辟蹊径,虽然网上有些 hack 的解法,但是我觉得太复杂了,不如直接用 userscript 来解决(完整代码可参考 web-util.js):
function copy_as_org_capture() {
const url = window.location.href;
const title = window.document.title;
GM_setClipboard(`[[${url}][${title}]]`);
alert(title);
}
GM_registerMenuCommand("org-capture", copy_as_org_capture);
VM.shortcut.register('c-i', copy_as_org_capture);
这样既能在快捷菜单中,通过点击来实现链接的复制,也能通过快捷键 C-i
来复制。
org-mac-link
在本文发布后,有热心读者提到在 macOS 上已经有这方面的轮子了:org-mac-link.el,原理也是通过 applescript 来获取链接信息,源码在这里。我自己试用了下,Firefox 不能正常拷贝,Safari 实现和本文一致,感兴趣的读者可以自己尝试下。这个插件使用很简单:
(use-package org-mac-link
:defer t
:load-path "~/.config/vendor/org-contrib/lisp" ;; org-contrib 的本地路径
:commands (org-mac-grab-link))
收听方式
反馈
- 对节目有想法或发现内容错误?欢迎来信交流️