在 emacs dired中,如何运行命令?

分享于 

2分钟阅读

电脑

  繁體 雙語

问题:

我有几个以dired模式标记的文件,并且我想运行一个命令( 每个文件上都有 (delete-trailing-whitespace) )。

是否有一种建立的方法,或者我需要自己写?

基本上我想做一些类似 (dired-do-shell-command)的事情,但是我想评估一个emacs表达式而不是 shell 命令。 我想在我已经标记的文件中执行这个操作,所以我不能使用 -batch


回答 1:

在我想做什么的情况下,我写了一些东西,以防其他人觉得有用:

更新: 用更通用的命令更新了这个解决方案。


(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 这样的明显命令。


回答 2:

如果你要使用 dired,请访问所有缓冲区,并将它的添加到所有缓冲区,并将它的保存到所有缓冲区中,然后将它的关闭。


回答 3:

这不是你要求的,但你可以在ibuffer中标记缓冲区并使用'e'( ibuffer-do-eval窗体)

我知道eshell允许你使用elisp来使用 shell 脚本( of ),因这里你可能会更容易地使用 eshell。



COM  文件  COMM  files  DIR  Comma