Вопрос В emacs dired, как я могу запустить команду для нескольких отмеченных файлов?


У меня есть несколько файлов, отмеченных в режиме dired-mode, и я бы хотел запустить команду (скажем (delete-trailing-whitespace) на каждом из них.

Есть ли встроенный способ сделать это, или мне нужно написать его самостоятельно?

В основном я хочу сделать что-то вроде (dired-do-shell-command) но я хочу оценить выражение emacs, а не команду оболочки. Я хочу сделать это в emacs в файлах, отмеченных мной, поэтому я не могу использовать -batch,


4
2017-08-17 00:52


происхождения




ответы:


Я написал что-то, чтобы делать то, что хочу, на тот случай, если кто-либо найдет это полезным:

Обновить: Обновлено это решение с помощью команды общего назначения.

(defun mrc-dired-do-command (command)
  "Run COMMAND on marked files. Any files not already open will be opened.
After this command has been run, any buffers it's modified will remain
open and unsaved."
  (interactive "CRun on marked files M-x ")
  (save-window-excursion
    (mapc (lambda (filename)
            (find-file filename)
            (call-interactively command))
          (dired-get-marked-files))))

Теперь M-x mrc-dired-do-command delete-trailing-whitespace делает то, что я хочу.

Я был бы рад, если бы кто-то сказал мне, что мне не нужно это делать, и я упустил очевидную команду вроде dired-do-command,


7
2017-08-17 01:08





У AFAIK dired нет такого средства, но ibuffer - использует по умолчанию для отметки всех файлов, которые вы хотите использовать (m), посетите их (C-u F), запустить ibuffer (M-x ibuffer [RET]), отметьте все буферы (m) и вызвать ibuffer-do-eval (E), вставьте выражение, которое вы хотите оценить в каждом буфере, сохраните их все (S) и закройте их (D).


4
2018-04-15 19:36





Это не совсем то, о чем вы просили, но вы можете отметить буферы в ibuffer и использовать «E» (ibuffer-do-eval FORM)

Я знаю, что eshell позволяет использовать elisp для сценариев оболочки (вроде), поэтому вы, вероятно, могли бы сделать это более легко от eshell.


1
2017-08-26 19:35



Спасибо, shapr, это очень полезно, хотя я действительно хотел сделать это в стиле. - Matt Curtis