如何复制超链接到emacs?

问题描述 投票:0回答:3

是否可以将带有超链接的文本从外部文件(例如,word(.doc) 文件)复制到 Emacs 并保留超链接?如果我将一篇包含 100 个超链接的文章从 Word 复制到 Emacs,并且必须重新输入每个超链接,这可能会非常烦人

这样的功能似乎在普通的 Emacs 中不可用,而且我对 Emacs 还很陌生,所以我希望这里有人能想出一个简单的功能来启用它。

谢谢

emacs
3个回答
3
投票

为了使超链接在 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 转换器。


0
投票

http://orgmode.org/worg/org-contrib/org-protocol.html应该可以完成这项工作。 而且它还能做更多事情。


0
投票

我研究了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)))
© www.soinside.com 2019 - 2024. All rights reserved.