org-mode超链接文件的打开方式 org-file-apps

最近在windows上使用org-mode管理自己的工作记录,有一些文件链接在文档中,之前的很多文件都是pdf,emacs会调用系统的软件打开。后来链接了一个docx文档,emacs自己吧docx打开了。当然打开的文档是不能正常阅读的。emacs把docx当成一个文本文档打开了,我的emacs里没有配置相关pdf的包,emacs不认识,所以就交给了系统打开。怎么让emacs识别不同的文档类型然后调用我们希望的程序打开链接呢,最后找到了org-file-apps这个variable,通过对它的设置就可以达到目的。 代码如下:

(setq org-file-apps
    '(("\\.docx\\'" . "wps.exe %s" )
      ("\\.doc\\'" . "wps.exe %s" ))
    ) 

docx和doc文件都使用wps打开,需要注意的是,wps.exe目录要在你的系统path中,要么吧wps的目录添加到系统path,简单点的在你的$WINDOWS$目录下创建一个wps.exe的快捷键就可以。

上诉代码只在windows系统中验证无误。

这个方法在windows vlc上面有点问题 可以打开vlc,但对应视频文件不播放

  (setq org-file-apps
      '((auto-mode . emacs)
        ("\\.mp4\\'" . "vlc.exe  \"%s\"")
        ("\\.mkv" . "vlc.exe \"%s\"")))

在命令行测试,发现windows的vlc播放视频文件要写成这样 vlc.exe "d:\\t\\pj\\z1.mp4"vlc.exe "d:\t\pj\z1.mp4",而org-file-apps调用vlc是这样的 vlc.exe "d:/t/pj/z1.mp4" ,这样光启动vlc不播放视频

windows vlc下的路径要用\\\,想把字符串替换加进去这么写是错的("\\.mkv\\'" . (replace-regexp-in-string "\/" "\\\\" "vlc.exe \"%s\""))

有谁知道怎么解决这个问题吗?

注:我的org文件中的 链接是自动生成动态更新的

图片

打开程序可以不指定,比如:("\\.wps\\'" . system)

感谢,使用了,发现这样在windows上可以

如何设置所有的文件都用系统默认程序

  • dired 中 用大写W
  • browse-url d:/xxx
  • doom emacs 里 org link file+sys:d:/xxx