Tôi muốn mở một pdf bằng Evince thay vì chế độ DocView. Có khả năng để mở một tập tin với một lệnh cụ thể như 'evince'?Làm cách nào để mở các tệp ở bên ngoài trong chế độ được chuyển hướng Emacs?
Trả lời
Có. Sử dụng !
khi đang trong dired để chạy lệnh shell trên một tệp.
Trong trường hợp evince
, thông minh hơn là sử dụng &
, mặc dù sẽ chạy lệnh không đồng bộ, vì vậy các emacs vẫn có thể sử dụng được khi bạn mở tệp PDF.
Bạn có thể sử dụng !
để mở tệp và sau đó chỉ định lệnh.
Có nhiều cách để thực hiện điều đó. Tôi đề xuất thư viện OpenWith. Thiết lập cho trường hợp của bạn có thể trông như thế:
(add-to-list 'load-path "/path/to/downloaded/openwith.el")
(require 'openwith)
(setq openwith-associations '(("\\.pdf\\'" "evince" (file))))
(openwith-mode t)
Nó đặt xử lý tập tin đó sẽ làm việc từ cả hai dired
và find-file
.
Ít nhất trong Mac OSX, tôi thay thế 'evince' bằng' mở', và sau đó nó sử dụng phần mềm mặc định ('Skim' trong trường hợp của tôi). – Dror
Lưu ý rằng trong trường hợp này, bạn chỉ cần nhấn 'RET' trên tên tệp trong dired thay vì sử dụng '!' Hoặc '&' để chạy lệnh shell.Bạn cũng mất tất cả các liên kết được xây dựng bằng cách sử dụng setq trên openwith-associations. Có thể có một cách tốt hơn để chỉ thay đổi liên kết pdf khi rời khỏi các liên kết cho .mp3, .jpg, ...? –
Vâng, có một cách dễ dàng để thay đổi liên kết pdf mà không làm mất những người khác: M-x tùy chỉnh nhóm RET openwith RET – Jorge
Hãy thử điều này.
(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)))
Điều này hoạt động tốt. Tôi thay thế 'gnome-open' bằng' xdg-open', trong trường hợp sử dụng trong GUI khác như KDE. –
Lưu ý rằng bạn có thể giữ quá trình này còn sống sau khi thoát khỏi Emacs bằng cách sử dụng nohup
[Wikipedia], do đó, đặt các điểm trên một tập tin duy nhất trong dired
:
C-u ! nohup evince ? &
mà tạo ra một Persistent Processes [EmacsWiki] .
Dưới đây là mở với bất kỳ ứng dụng bên ngoài nào từ chế độ dired trên hộp OSX
, sử dụng phím tắt C-c o
khi con trỏ nằm trên một dòng có tệp mà người dùng muốn mở bằng ứng dụng bên ngoài - bộ đệm thứ hai được mở ra cho thư mục /Applications
và phím enter chọn ứng dụng bên ngoài. [Chọn nhiều tệp vượt quá phạm vi của câu trả lời này, tuy nhiên, tôi đã bao gồm định nghĩa cho dired-get-marked-files
chỉ trong trường hợp ai đó quan tâm. Tôi cũng đã bao gồm một tùy chọn để mở một ứng dụng bên ngoài thay thế cho việc sử dụng một cái gì đó như Finder.app hoặc Dock.app hoặc Spotlight - từ thư mục /Applications
trong dired, khóa RET
sẽ cung cấp cho người dùng các lựa chọn để mở ứng dụng bên ngoài hoặc tham gia vào các thư mục ứng dụng đóng gói]
một phương pháp thứ hai sẽ được sử dụng một cái gì đó giống như (equal (file-name-extension input-filename) ".pdf"))
để thiết lập điều kiện và sử dụng start-process . . .
để kích hoạt một ứng dụng bên ngoài đặc biệt để mở các tập tin được lựa chọn -. ví dụ, (start-process "pdf-with-skim" nil "open" "-a" "/Applications/Skim.app/Contents/MacOS/Skim" input-filename)
. Điều này có thể được thực hiện khá phức tạp với các lựa chọn phụ (ví dụ: Adobe, Skim hoặc Xem trước) và cũng có thể được thực hiện để sử dụng chức năng string-match
hoặc một loạt các phần mở rộng tệp. Cách tiếp cận thứ hai này hướng tới các tùy chọn cá nhân của người dùng dựa trên các chương trình cụ thể được cài đặt, trong khi tùy chọn đầu tiên (bên dưới) có thể được sử dụng để truy cập bất kỳ ứng dụng bên ngoài đã cài đặt nào.
(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)))))))
Trong Windows, tôi tắt sử dụng! và lệnh "explorer" để mở PDF/Word/Excel ...
Tôi nghĩ rằng "bắt đầu" nên hoạt động quá và ngắn hơn. –
- 1. ngày chế độ org ở các chế độ Emacs khác
- 2. cách mở tệp * .info trong emacs trong chế độ thông tin?
- 3. Làm cách nào để mở tệp ở chế độ đọc/ghi trong Vim?
- 4. Tab ở chế độ HTML trong Emacs
- 5. Làm cách nào để tạo các tệp PDF mở Org ở Evince?
- 6. Làm cách nào để truy cập menu trong Emacs ở chế độ bảng điều khiển?
- 7. Cách hủy \ hypersetup ở chế độ 0rg của Emacs
- 8. mở tệp ở chế độ độc quyền trong C#
- 9. Trong bash, làm thế nào để mở một mô tả tập tin có thể ghi được chuyển hướng bên ngoài?
- 10. Làm cách nào để thay đổi ký tự ổ đĩa ở chế độ ido (Emacs)?
- 11. Cách mở tệp bên ngoài từ HTML
- 12. Chế độ Viper ở tất cả các chế độ
- 13. Làm cách nào để bỏ qua "trong tệp được bao gồm" trong chế độ biên dịch C++ emacs?
- 14. Làm cách nào để khắc phục sự thay đổi chế độ javascript trong các emacs 24?
- 15. tuyên bố chế độ một tập tin emacs nên được mở trong
- 16. Làm cách nào để thực hiện div di chuyển bị hạn chế trong div bên ngoài?
- 17. Đặt hướng ở chế độ ngang trong android ở cả hai bên
- 18. emacs: mở tất cả các tệp .txt trong một thư mục cụ thể trong một chế độ chính cụ thể
- 19. Làm thế nào để sử dụng các biến vim trong lệnh bộ lọc bên ngoài trong chế độ trực quan?
- 20. Emacs: nhập CSV vào chế độ org
- 21. Làm thế nào để kích hoạt chế độ flyspell trong các emacs cho tất cả các tệp và tất cả các chế độ chính?
- 22. Làm cách nào để đặt chế độ chính mặc định trong tệp thư mục cục bộ?
- 23. Làm cách nào để chuyển đổi chế độ xem từ trong chế độ xem?
- 24. Làm cách nào để xem danh sách các tệp đang mở trong Emacs? Hoặc duyệt một thư mục trong Emacs?
- 25. Cách chuyển thanh điều hướng và bộ điều khiển điều hướng ở chế độ ngang
- 26. Chế độ xem phác thảo Emacs có thể ở chế độ CC?
- 27. emacs + geben làm cách nào để mở một tệp để đặt các điểm ngắt trong đó
- 28. Đuôi mở rộng tệp trong Emacs
- 29. Trong Perl, làm cách nào để chuyển đối số unicode sang các lệnh bên ngoài?
- 30. Làm cách nào để nhập tệp JavaScript bên ngoài?
Và '&' thay vì '!' nếu bạn muốn chạy lệnh đó một cách không đồng bộ. – Thomas