Emacs org-mode文件/查看器关联

24

在Emacs org-mode文件中,当我点击PDF文件时,它会在PDF查看器中打开。同样地,当我点击链接时,它会在Web浏览器中打开。但是,当我点击图片文件的路径时,字节流以文本形式在编辑器中打开。如何配置Emacs/org-mode以使用指定的应用程序打开图像文件,例如图像编辑器或浏览器?


顺便提一下,Emacs(理论上)能够自己显示图像。http://www.gnu.org/s/emacs/manual/html_node/elisp/Images.html - phils
1
@phils 尝试使用 `org-display-inline-images'。 - Tao Peng
2个回答

19
在org-mode中,org-file-apps用于控制在单击类似URL的文本时要执行什么操作。
默认情况下,它被配置为:
((auto-mode . emacs)
 ("\\.mm\\'" . default)
 ("\\.x?html?\\'" . default)
 ("\\.pdf\\'" . default))

如org-file-apps帮助文档所述:auto-mode会匹配任何在auto-mode-alist中匹配到的文件,因此Emacs能处理的所有文件都可以使用它来打开。使用emacs命令,将在Emacs中打开大多数文件。

你可能已经在auto-mode-alist中配置了图像文件扩展名。你可以通过以下方法覆盖这个列表(例如,对于png文件):

(add-hook 'org-mode-hook
      '(lambda ()
             (setq org-file-apps
                   (append '(
                             ("\\.png\\'" . default)
                             ) org-file-apps ))))
使用这段代码后,当我点击像这样的链接:
file:///e:/jrx/emacs/image.png

它使用与该文件扩展名相关联的默认操作系统程序,在emacs外部打开文件。

您不必更改org-file-apps-defaults-windowsntorg-file-apps-defaults-gnuorg-file-apps-defaults-macosx以使用与文件扩展名相关联的操作系统默认程序。


4
使用 appendadd-hook 'org-mode-hook 结合使用似乎会在每次调用 Org-mode 时都向列表中添加元素。这可能会导致列表被大量填充 "\\.png\\'" . default。你可以考虑使用类似于 https://dev59.com/-moy5IYBdhLWcg3wA5WC#8836108 中的 add-to-list 构造来避免这种问题。 - N.N.

3

这要根据您使用的操作系统而定,但应该可以通过 org-file-apps 进行配置。

  • 在 Mac OS X 上,我会使用 open(或 open -a 应用程序名称)来自动打开文件。
  • 在 Linux/BSD 等系统上,我会使用 xdg-open(需要一些设置)。
  • 在 Windows 上,我想我会使用 open(在控制台中)。

请查看变量 org-file-apps-defaults-windowsntorg-file-apps-defaults-gnuorg-file-apps-defaults-macosx,具体取决于您的平台。


1
为了帮助那些遇到xdg-open问题的人,可以链接到https://askubuntu.com/questions/646631/emacs-doesnot-work-with-xdg-open :) - xeruf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接