Câu hỏi Trong emacs dired, làm thế nào tôi có thể chạy một lệnh trên nhiều tập tin đánh dấu?


Tôi có một số tệp được đánh dấu ở chế độ dired và tôi muốn chạy lệnh trên (nói (delete-trailing-whitespace) trên mỗi người trong số họ.

Có cách tích hợp để thực hiện việc này không, hoặc tôi có cần viết nó không?

Về cơ bản tôi muốn làm một cái gì đó như (dired-do-shell-command) nhưng tôi muốn đánh giá một biểu thức emacs hơn là một lệnh shell. Tôi muốn làm điều này trong các emacs trên các tập tin tôi đã đánh dấu, vì vậy tôi không thể sử dụng -batch.


4
2017-08-17 00:52


gốc




Các câu trả lời:


Tôi đã viết một cái gì đó để làm những gì tôi muốn, trong trường hợp bất cứ ai khác thấy nó hữu ích:

Cập nhật: Cập nhật giải pháp này với một lệnh mục đích chung hơn.

(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))))

Hiện nay M-x mrc-dired-do-command delete-trailing-whitespace làm những gì tôi muốn.

Tôi sẽ rất vui nếu có ai đó chỉ ra rằng tôi không phải làm điều này, và tôi đã bỏ qua một mệnh lệnh rõ ràng như dired-do-command.


7
2017-08-17 01:08





AFAIK dired không có một cơ sở như vậy, nhưng ibuffer không - sử dụng dired để đánh dấu tất cả các tập tin bạn muốn có hiệu lực (m), thăm họ (C-u F), chạy ibuffer (M-x ibuffer [RET]), đánh dấu tất cả các bộ đệm (m) và gọi ibuffer-do-eval (E), chèn biểu thức bạn muốn đánh giá trong mỗi bộ đệm, lưu tất cả (S) và đóng chúng lại (D).


4
2018-04-15 19:36





Đây không phải là những gì bạn yêu cầu, nhưng bạn có thể đánh dấu bộ đệm trong ibuffer và sử dụng 'E' (ibuffer-do-eval MẪU)

Tôi biết rằng eshell cho phép bạn sử dụng elisp cho shell scripting (sắp xếp) để bạn có thể làm điều đó dễ dàng hơn từ eshell.


1
2017-08-26 19:35



Cảm ơn shapr, đó là khá hữu ích, mặc dù tôi đã muốn làm điều đó trong dired. - Matt Curtis