是否可以将带有超链接的文本从外部文件(例如,word(.doc) 文件)复制到 Emacs 并保留超链接?如果我将一篇包含 100 个超链接的文章从 Word 复制到 Emacs,并且必须重新输入每个超链接,这可能会非常烦人
这样的功能似乎在普通的 Emacs 中不可用,而且我对 Emacs 还很陌生,所以我希望这里有人能想出一个简单的功能来启用它。
谢谢
为了使超链接在 emacs 中工作(意味着实际的超链接被隐藏,“此处”一词被强调/突出显示,并且可以通过鼠标或键盘快捷键和/或 M-x 函数调用“单击”),您需要使用支持这种行为的模式之一:
Org 模式,这是一个主要模式,也是一个具有大量功能的非常重要的包。创建一个扩展名为
.org
的文件,将链接的 url 复制到那里,它就会变成“live”。您可以编辑它以隐藏网址,方法是当光标位于链接上时单击 C-cC-l,然后确认网址并添加说明 - “此处”一词。之后,网址将隐藏,“此处”将突出显示并可单击。Wiki 模式之一,有主要模式和次要模式(因此您可以尝试在具有各种主要模式的文件中使用该功能)。详情请参阅链接。
如果您不想使用其他软件包,这里是有关如何使任意文本可点击的文档,但您需要熟悉一些 elisp 编程。
更新:
我发现您需要将 ur 批量导入到 emacs 中。问题在于 emacs 中对多格式剪贴板内容(例如,当您从 Web 浏览器复制时创建的内容)的不完整支持。根据 http://www.mail-archive.com/[email protected]/msg03026.html,不支持 HTML 内容,因此它会作为纯文本粘贴到 emacs 中。我看到的唯一方法是在浏览器中打开页面源代码,将其保存到文件,使用 xsltproc 或其他方式提取 url 列表(以及周围的文本,如果需要的话),并将 url 转换为组织模式样式链接(也可以使用xsltproc 或 emacs 正则表达式搜索/替换)。不幸的是,据我所知,没有 html 到 org 转换器。
http://orgmode.org/worg/org-contrib/org-protocol.html应该可以完成这项工作。 而且它还能做更多事情。
我研究了macos上剪贴板的二进制内容
可以将带有超链接的文本从 Excel 复制到组织模式文件。
(defun decode-hex-to-string (hex-string)
"Decode a hexadecimal string to its original content."
(apply 'concat
(mapcar (lambda (pair)
(string (string-to-number pair 16)))
(seq-partition hex-string 2))))
(defun extract-hyperlink-from-html (html)
"Extract the hyperlink and text from HTML content."
(if (string-match "<a href=\"\\([^\"]+\\)\"[^>]*>\\([^<]+\\)</a>" html)
(let ((url (match-string 1 html))
(text (match-string 2 html)))
(format "[[%s][%s]]" url text))
html))
(defun copy-text-with-hyperlink-to-org-file ()
"Decode the clipboard content from hexadecimal to HTML and insert it into the current buffer."
(interactive)
(let* ((osascript-cmd "osascript -e 'the clipboard as \"HTML\"'")
(hex-string (shell-command-to-string osascript-cmd))
(decoded-html (decode-hex-to-string (string-trim hex-string)))
(org-link (extract-hyperlink-from-html decoded-html)))
(insert org-link)))