我想用evince而不是DocView模式打開pdf。是否有可能使用特定命令打開文件,如'evince'?如何在Emacs dired模式下以外部方式打開文件?
回答
是的。在dired中使用!
在文件上運行shell命令。
對於evince
,使用&
會更聰明,它會異步運行該命令,因此在您打開PDF時,emacs仍然可用。
您可以使用!
來打開文件,然後指定一個命令。
有更多的方法可以做到這一點。我建議OpenWith庫。設置爲你的情況可能看起來像:
(add-to-list 'load-path "/path/to/downloaded/openwith.el")
(require 'openwith)
(setq openwith-associations '(("\\.pdf\\'" "evince" (file))))
(openwith-mode t)
它設置文件處理程序,將來自dired
和find-file
工作。
試試這個。
(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)))
這很好。如果在另一個GUI(例如KDE)中使用,我將'gnome-open'替換爲'xdg-open'。 –
注意,您可以保持工藝活用nohup
[百科]退出的Emacs後,所以把點上的一個文件中dired
:
C-u ! nohup evince ? &
它創建了一個Persistent Processes [EmacsWiki] 。
這是一個打開的任何外部應用程序從一個OSX
框上的直接模式,使用鍵盤快捷鍵C-c o
當光標與用戶想要用外部應用程序打開一個文件的行 - 一個第二個直接緩衝器打開到/Applications
文件夾,然後回車鍵選擇外部應用程序。 [選擇多個文件超出了這個答案的範圍,但是,我已經包含了一個dired-get-marked-files
的定義,以防萬一有人感興趣。我還包括一個選項來打開一個外部應用程序作爲使用類似Finder.app或Dock.app或Spotlight的替代方案 - 從/Applications
文件夾中的dired中,RET
鍵將爲用戶提供選擇,以打開應用外部或進入封裝的應用程序的文件夾]
的第二種方法是使用類似(equal (file-name-extension input-filename) ".pdf"))
設置條件和使用start-process . . .
以激活特定外部應用程序來打開所選擇的文件 - 例如,(start-process "pdf-with-skim" nil "open" "-a" "/Applications/Skim.app/Contents/MacOS/Skim" input-filename)
。這可以通過子選項(例如,Adobe,Skim或Preview)製作得相當詳細,也可以使用string-match
函數或各種文件擴展名。第二種方法更適合於基於安裝的特定程序的用戶個人偏好,而第一種方法(下文)可用於訪問任何已安裝的外部應用程序。
(require 'dired)
(defun dired-read-file-name (&optional directory)
(if directory
(dired directory)
(dired nil))
(let (output-filename)
(recursive-edit)
output-filename))
;; Open with external application.
(defvar open-with-variable nil)
(define-key dired-mode-map (kbd "C-c o") (lambda() (interactive)
(setq open-with-variable t)
(let* (
(lawlist-filename (dired-get-file-for-visit))
(application (dired-read-file-name "/Applications")))
(start-process "external" nil "open" "-a" application lawlist-filename)
(setq open-with-variable nil))))
;; select file or directory.
(define-key dired-mode-map (kbd "<return>") (lambda() (interactive)
(let* (
(input-filename
(if (or (re-search-backward "^*" nil t)
(re-search-forward "^*" nil t))
(dired-get-marked-files)
(dired-get-file-for-visit)))
(dired-buffer-name (buffer-name)))
(cond
;; open file
((and (not (file-directory-p input-filename))
(file-exists-p input-filename)
(not (equal input-filename (concat (file-name-directory input-filename) ".")))
(not open-with-variable))
(kill-buffer dired-buffer-name)
(find-file input-filename))
;; open with external application
((and (file-directory-p input-filename)
(not (equal input-filename (concat (file-name-directory input-filename) ".")))
open-with-variable
(equal (file-name-extension input-filename) "app"))
(setq output-filename input-filename)
(kill-buffer dired-buffer-name)
(throw 'exit nil))
;; Enter the directory; or, open an application
((and (file-directory-p input-filename)
(not (equal input-filename (concat (file-name-directory input-filename) "."))))
(if (equal (file-name-extension input-filename) "app")
(progn
(message "[o]pen %s" (file-name-nondirectory input-filename))
(let* ((open-or-enter (read-char-exclusive)))
(cond
((eq open-or-enter ?o)
(start-process "application" nil "open" "-a" input-filename)
(kill-buffer dired-buffer-name))
(t
(dired-find-file)
(goto-char (point-min))
(re-search-forward " \\.\\.$" nil t)
(kill-buffer dired-buffer-name)))))
(dired-find-file)
(goto-char (point-min))
(re-search-forward " \\.\\.$" nil t)
(kill-buffer dired-buffer-name)))))))
在Windows中,我使用了!並命令「資源管理器」打開PDF/Word/Excel ...
我認爲「開始」應該工作得太短。 –
- 1. 如何快速在dired模式下打開子文件夾中的文件?
- 2. 如何在info模式下打開emacs中的* .info文件?
- 3. 如何告訴emacs在C++模式下打開.h文件?
- 4. 在Emacs中,如何在另一個框架中以「ibuffer/dired模式」打開緩衝區/文件?
- 5. 在emacs XML模式下,如何格式化XML模式文件?
- 6. 如何停止emacs dired模式打開如此多的緩衝區?
- 7. 如何以ROOT模式打開文件?
- 8. Dired模式:查看文件
- 9. grails emacs模式 - 「無法打開加載文件」「項目模式」
- 10. Emacs的dired模式中的圖標
- 11. PLSQL:在寫模式下打開文件
- 12. 以八度模式打開文件時啓用蛇形模式[emacs]
- 13. Dired - 在另一個Emacs窗口中打開文件
- 14. 如何以編程方式打開模式組件?
- 15. Emacs鍵綁定:(dired)模式會覆蓋小模式鍵映射?
- 16. UISplitViewController - 在縱向模式下以masterViewController可見的方式打開
- 17. 以編程方式在比較模式下打開MS Word
- 18. 在Reader模式下以編程方式打開Safari
- 19. 從HTML外部打開模式
- 20. 以寫入模式打開文件
- 21. 打開外部文件會在讀取模式下產生錯誤或創建
- 22. Emacs:如何在啓動時打開Sunrise-cd dired導航
- 23. 以編程方式打開pdf文件
- 24. 如何在emacs org模式下包含純文本文件
- 25. 是否可以在揭示模式中打開外部頁面?
- 26. 如何以獨佔模式在C++中打開文件
- 27. 如何在Java中以共享模式打開文件
- 28. 在emacs組織模式之外爲.emacs文件設置
- 29. 如何在android中以編程方式打開文件夾?
- 30. 鍵盤在橫向模式下以全屏模式打開
如果你想異步運行該命令,而'&'而不是'!'。 – Thomas