Quiero abrir un pdf con evince en lugar del modo DocView. ¿Existe la posibilidad de abrir un archivo con un comando específico como 'evince'?¿Cómo puedo abrir archivos externamente en el modo direc de Emacs?
Respuesta
Sí. Use !
mientras está en dirección para ejecutar un comando de shell en un archivo.
En el caso de evince
, es más inteligente usar &
, que ejecutará el comando de forma asíncrona, por lo que emacs seguirá siendo utilizable mientras tenga el PDF abierto.
Puede usar !
para abrir el archivo y luego especificar un comando.
Hay más de una forma de hacerlo. Sugiero OpenWith biblioteca. Configuración de su caso puede parecerse a lo siguiente:
(add-to-list 'load-path "/path/to/downloaded/openwith.el")
(require 'openwith)
(setq openwith-associations '(("\\.pdf\\'" "evince" (file))))
(openwith-mode t)
Establece manejador de archivo que funcionará tanto dired
y find-file
.
Al menos en Mac OSX, reemplacé 'evince' con' open', y luego usa el software predeterminado ('Skim' en mi caso). – Dror
Tenga en cuenta que en este caso, simplemente presione 'RET' en el nombre del archivo en dired en lugar de usar'! 'O' & 'para ejecutar un comando de shell.También pierde todas las asociaciones integradas al usar setq en openwith-associations. ¿Podría haber una mejor manera de cambiar solo la asociación de pdf mientras se deja en asociaciones para .mp3, .jpg, ...? –
Sí, hay una manera fácil de cambiar la asociación de PDF sin perder las otras: M-x personalizar-grupo RET abrir con RET – Jorge
Pruebe esto.
(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)))
Esto funcionó muy bien. Sustituyo 'gnome-open' con' xdg-open', en caso de usarlo en otra GUI como KDE. –
Tenga en cuenta que usted puede mantener vivo el proceso después de salir de Emacs usando nohup
[Wikipedia], a fin de poner el punto en un único archivo en dired
:
C-u ! nohup evince ? &
que crea un Persistent Processes [EmacsWiki] .
Aquí está un abierto con cualquier aplicación externa desde el modo direc en un cuadro OSX
, usando un atajo de teclado de C-c o
cuando el cursor está en una línea con un archivo que el usuario quiere abrir con una aplicación externa: el segundo búfer directo se abre en la carpeta /Applications
y la tecla Intro selecciona la aplicación externa. [Seleccionar varios archivos está fuera del alcance de esta respuesta, sin embargo, he incluido una definición para dired-get-marked-files
por si acaso alguien estaba interesado. También he incluido una opción para abrir una aplicación externa como alternativa al uso de Finder.app o Dock.app o Spotlight. De la carpeta /Applications
, la clave RET
ofrecerá al usuario la opción de abrir el aplicación externa o entrar en la carpeta de aplicación empaquetada]
un segundo método sería utilizar algo como (equal (file-name-extension input-filename) ".pdf"))
para establecer condiciones y utilizar start-process . . .
para activar una aplicación externa en particular para abrir el archivo seleccionado -. por ejemplo, (start-process "pdf-with-skim" nil "open" "-a" "/Applications/Skim.app/Contents/MacOS/Skim" input-filename)
. Esto puede hacerse bastante complejo con sub-opciones (por ejemplo, Adobe, Skim o Vista previa), y también se puede hacer para usar una función string-match
o una variedad de extensiones de archivo. Este segundo enfoque se orienta más hacia las preferencias personales del usuario en función de los programas particulares que se instalan, mientras que la primera opción (a continuación) se puede utilizar para acceder a cualquier aplicación externa instalada.
(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)))))))
En Windows, ya no uso. y comando "explorador" para abrir PDF/Word/Excel ...
Creo que "comenzar" debería funcionar también y es más corto. –
- 1. emacs direc y openwith
- 2. ¿Cómo evito que el modo direc de emacs abra tantos buffers?
- 3. "abrir el búfer aquí" en emacs (modo ido)
- 4. ¿Cómo puedo desactivar el modo de autocompletar en emacs?
- 5. cómo abrir el archivo * .info en emacs en modo de información?
- 6. Pregunta del modo Emacs
- 7. Emacs en archivos de Windows y PNG
- 8. emacs - autocompletado en modo Emacs Lisp
- 9. modo palangres en Emacs
- 10. ¿Cómo puedo abrir archivos en C#
- 11. Modo plegable persistente de Emacs
- 12. ¿Cómo puedo abrir archivos .obj en Blender?
- 13. Abrir un búfer de Emacs cuando un comando intenta abrir un editor en modo de shell
- 14. Dired - abrir archivos en otra ventana de Emacs
- 15. Emacs pitón modo
- 16. ¿Ventana dedicada para el modo directo en Emacs?
- 17. Abrir el archivo en el modo Agregar: usando abrir() API
- 18. Cómo obtener el modo mmm para trabajar en emacs 24
- 19. ¿Bloquea Emacs el modo menor?
- 20. WiX: ¿Cómo puedo establecer una propiedad externamente?
- 21. ¿Puedo cambiar el historial de archivos de búsqueda de Emacs?
- 22. ¿Cómo puedo abrir programáticamente el selector de archivos con JavaScript?
- 23. ¿Desactiva el modo víbora en Emacs?
- 24. Cómo abrir emacs dentro de bash
- 25. ispell en el modo Emacs LaTeX
- 26. Emacs comentar-región en el modo C
- 27. ¿Puedo usar PowerShell en modo shell para Emacs?
- 28. ¿Cómo puedo acceder al menú en Emacs en el modo de consola?
- 29. documentación en modo python para Emacs
- 30. Emacs vuelve a abrir el búfer anterior inactivado?
Y '&' en lugar de '!' si desea ejecutar ese comando de forma asincrónica. – Thomas