¿Cómo puedo agregar comandos de shell predeterminados para varios tipos de archivos?


Respuestas:


7

TL; DR:

Esta funcionalidad proviene dired-x, no Dired. Úselo (require 'dired-x)en su archivo de inicio y luego personalícelo dired-guess-shell-alist-user.


Sin embargo, podemos ver dónde se conecta Dired dired-x:

(defun dired-read-shell-command (prompt arg files)
  "Read a dired shell command.
PROMPT should be a format string with one \"%s\" format sequence,
which is replaced by the value returned by `dired-mark-prompt',
with ARG and FILES as its arguments.  FILES should be a list of
file names.  The result is used as the prompt.

This normally reads using `read-shell-command', but if the
`dired-x' package is loaded, use `dired-guess-shell-command' to
offer a smarter default choice of shell command."
  (minibuffer-with-setup-hook
      (lambda ()
    (set (make-local-variable 'minibuffer-default-add-function)
         'minibuffer-default-add-dired-shell-commands))
    (setq prompt (format prompt (dired-mark-prompt arg files)))
    (if (functionp 'dired-guess-shell-command) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<
    (dired-mark-pop-up nil 'shell files
               'dired-guess-shell-command prompt files)
      (dired-mark-pop-up nil 'shell files
             'read-shell-command prompt nil nil))))

Después de leer el dired-xmanual (info "dired-x"), aprenderá la variable dired-guess-shell-alist-user, que puede personalizar.

Aquí hay un ejemplo de cambio dired-guess-shell-alist-user

(setq dired-guess-shell-alist-user
      '(("\\.e?ps$" "gv" "xloadimage" "lpr")
        ("\\.chm$" "xchm")
        ("\\.rar$" "unrar x")
        ("\\.e?ps\\.g?z$" "gunzip -qc * | gv -")
        ("\\.pdf$" "zathura")
        ("\\.flv$" "mplayer")
        ("\\.mov$" "mplayer")
        ("\\.3gp$" "mplayer")
        ("\\.png$" "feh")
        ("\\.jpg$" "feh")
        ("\\.JPG$" "feh")
        ("\\.avi$" "mplayer")))

2
En suma: (require 'dired-x)y personalizar dired-guess-shell-alist-user. ;-)
Dibujó

@Drew ¡Sin embargo, me sentiría mal por publicar una respuesta tan corta! XD Agregaré tu TL; DR :)
Sean Allred

No quise decir en absoluto ese comentario como un sustituto de su respuesta más completa.
Dibujó

@Drew :) Pero haces un buen punto: no fue sencillo obtener 'la respuesta' de mi respuesta. Necesito practicar mi escritura; esa es una de las razones por las que estoy aquí :)
Sean Allred

1
Bueno. Querer comunicarse mejor muestra cuánto está tratando de ayudar a las personas.
Dibujó
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.