hhlh3l
1
最近在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系统中验证无误。
wsug
2
这个方法在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)