我有几个文件以 dired-mode 标记,我想运行一个命令(比如(delete-trailing-whitespace)在每个文件上。
有没有内置的方法可以做到这一点,还是我需要自己编写?
基本上我想做类似的事情,(dired-do-shell-command)但我想评估一个 emacs 表达式而不是一个 shell 命令。我想在 emacs 中对我标记的文件执行此操作,因此我无法使用-batch.
我写了一些东西来做我想做的事,以防其他人觉得它有用:
更新:使用更通用的命令更新了此解决方案。
(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))))
Run Code Online (Sandbox Code Playgroud)
现在M-x mrc-dired-do-command delete-trailing-whitespace做我想做的。
如果有人向我指出我不必这样做,我会很高兴,而我忽略了像dired-do-command.
AFAIK dired 没有这样的功能,但 ibuffer 有 — 使用 dired 标记您想要影响的所有文件 ( m),访问它们 ( C-u F),运行 ibuffer ( M-x ibuffer [RET]),标记所有缓冲区 ( m) 并调用ibuffer-do-eval( E),插入要在每个缓冲区中计算的表达式,将它们全部保存 ( S) 并关闭它们 ( D)。
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |