web-dev-qa-db-ja.com

Emacs diredモードで外部からファイルを開くにはどうすればよいですか?

DocViewモードの代わりにevinceを使用してPDFを開きたい。 'evince'のような特定のコマンドでファイルを開く可能性はありますか?

32
Gustavo Alip

はい。ファイルに対してShellコマンドを実行するには、dired中に!を使用します。

evinceの場合、コマンドを非同期で実行する&を使用する方が賢明です。したがって、PDF開いた。

23
Rafe Kettler

それを行う方法は複数あります。 OpenWith ライブラリをお勧めします。ケースの設定は次のようになります。

(add-to-list 'load-path "/path/to/downloaded/openwith.el")
(require 'openwith)
(setq openwith-associations '(("\\.pdf\\'" "evince" (file))))
(openwith-mode t)

diredfind-fileの両方から機能するファイルハンドラーを設定します。

18
Victor Deryagin

これを試して。

(defun dired-open-file ()
  "In dired, open the file named on this line."
  (interactive)
  (let* ((file (dired-get-filename nil t)))
    (message "Opening %s..." file)
    (call-process "gnome-open" nil 0 nil file)
    (message "Opening %s done" file)))
9
tototoshi

!を使用してファイルを開き、コマンドを指定できます。

4
Noufal Ibrahim

Nohup [Wikipedia]を使用すると、Emacsを終了した後もプロセスを存続させることができるため、dired内の単一のファイルにポイントを置いてください。

C-u ! Nohup evince ? &

永続プロセス [EmacsWiki]を作成します。

3
Iceland_jack

Windowsではよく使っています!そして「エクスプローラー」コマンドでPDF/Word/Excelを開きます。

1
Shenghai.Geng
(defun dired-open()
  (interactive)
  (setq file (dired-get-file-for-visit))
  (setq ext (file-name-extension file))
  (cond ((string= ext "pdf")
         ;; Shell-quote-argument escapes white spaces on the file name
         (async-Shell-command (concat "zathura " (Shell-quote-argument file))))
        ((string= ext "epub")
         (async-Shell-command (concat "zathura " (Shell-quote-argument file))))
        ((string= ext "rar")
         (async-Shell-command (concat "file-roller " (Shell-quote-argument file))))
        ((string= ext "Zip")
         (async-Shell-command (concat "file-roller " (Shell-quote-argument file))))
        (t (dired-find-file))))
0
Ramses Aldama