2014-04-12 74 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