2014-04-12 47 views
2

在emacs中使用dired,我会打开(即:一个PNG)任何文件与观众名单(可通过打字选择)作为'打开'的方式...emacs如何为文件选择“open-with”?

我该怎么做?

谢谢

史蒂夫,

+0

我使用自定义设置:在没有正常编辑的文件类型(例如* .pdf)上输入密钥(或者当我选择多个相似类型文件时),我得到一个选项列表 - 例如'[a ] dobe | [s] kim | [p]评论| [O] mnipage'。如果我想要一些特殊的东西,而不是使用回车键,我打了一个用户定义的键盘快捷方式,而dired缓冲区打开应用程序文件夹 - 在'recursive-edit'中 - 然后当我点击回车键时它将打开之前选择的文件 - 一个“启动进程”。 。 .'被选定的应用程序和文件打开(s)激活。 – lawlist

+0

这是上面介绍的一个Github示例的链接:https://github.com/lawlist/dired-read-file-name/blob/master/dired-read-file-name.el – lawlist

回答

0

如果能够正常浏览者的名单做,你可以打虽然指针位于dired中的某个文件上,并且您可以键入命令的名称(如果Emacs足够新,则使用制表符完成)。 dired将运行该命令,并在最后添加文件的名称。

如果文件名不应该在命令的末尾,请将*添加到应该的位置,然后dired将它放在那里。

例如,击打超过foo.png而打字只是bar将运行bar foo.png,而打字bar * --baz将运行bar foo.png --baz

1

您应该使用&在异步中运行命令: 将在命令运行时冻结Emacs。

自定义dired-guess-shell-alist-user为常见扩展猜测名单:

(setq dired-guess-shell-alist-user 
     '(("\\.pdf\\'" "evince" "okular") 
     ("\\.eps\\'" "evince") 
     ("\\.jpe?g\\'" "eog") 
     ("\\.png\\'" "eog") 
     ("\\.gif\\'" "eog") 
     ("\\.xpm\\'" "eog") 
     ("\\.csv\\'" "libreoffice") 
     ("\\.tex\\'" "pdflatex" "latex") 
     ("\\.\\(?:mp4\\|mkv\\|avi\\|flv\\|ogv\\)\\'" "vlc") 
     ("\\.\\(?:mp3\\|flac\\)\\'" "rhythmbox") 
     ("\\.html?\\'" "firefox") 
     ("\\.cue?\\'" "audacious"))) 

名单上的第一个项目将是缺省的选择,例如evince 超过okular。您可以导航到 M-n/M-p

如果你是在Linux上,你可以试试,我使用此任务的命令:

(defvar dired-filelist-cmd 
    '(("vlc" "-L"))) 

(defun dired-start-process (cmd &optional file-list) 
    (interactive 
    (let ((files (dired-get-marked-files t current-prefix-arg))) 
    (list 
     (dired-read-shell-command "& on %s: " current-prefix-arg files) 
     files))) 
    (apply 
    #'start-process 
    (list cmd nil shell-file-name shell-command-switch 
     (format "nohup 1>/dev/null 2>/dev/null %s \"%s\"" 
       (if (> (length file-list) 1) 
        (format "%s %s" 
          cmd 
          (cadr (assoc cmd dired-filelist-cmd))) 
        cmd) 
       (mapconcat #'expand-file-name file-list "\" \""))))) 

这比dired-do-async-shell-command一个绑定到 &好,因为打开的文件将继续存在即使你关闭了 Emacs打开它们。我倾向于关闭Emacs比平常更多,因为 通常我测试的东西,它的重启速度比重置为 的默认状态。

+0

不,这不起作用与一个具有不同扩展名的文件列表:'...(“\\。jpe?g \\'”“eog”)(“\\。png \\'”“eog”)(“\\。gif \\'“”eog“)(”\\。xpm \\'“”eog“)...'。请参阅[Emacs错误#17251](http://debbugs.gnu.org/cgi/bugreport。CGI?错误= 17251)。你必须结合这些正则表达式并使用单个条目来执行命令“eog”。 – Drew

+0

谢谢。我需要加载'dired-x'和'dired-aux'才能工作。 – rvf0068