Emacs Dired中的多个异步shell命令?

Emacs Dired中的多个异步shell命令?,shell,emacs,asynchronous,command,dired,Shell,Emacs,Asynchronous,Command,Dired,Emacs显然可以处理多个异步子进程,否则,举例来说,像OrgBabel这样的多语言编程环境是不可能的 但是,当我在Dired中启动异步shell命令以查看pdf文件(&evice),然后尝试对第二个pdf文件执行相同操作时,我会收到以下消息: “某个命令正在运行-杀死它?是或否?” 有没有一种方法可以在Dired中并行运行多个异步shell命令?我认为使用Dired do async shell命令是不可能的,但是如果您只想打开某个文件,我建议使用某个外部应用程序,它允许任何数量的外部进程运行

Emacs显然可以处理多个异步子进程,否则,举例来说,像OrgBabel这样的多语言编程环境是不可能的

但是,当我在Dired中启动异步shell命令以查看pdf文件(&evice),然后尝试对第二个pdf文件执行相同操作时,我会收到以下消息:

“某个命令正在运行-杀死它?是或否?”


有没有一种方法可以在Dired中并行运行多个异步shell命令?

我认为使用
Dired do async shell命令是不可能的,但是如果您只想打开某个文件,我建议使用某个外部应用程序,它允许任何数量的外部进程运行。

当您使用
dired do async shell命令时
Emacs创建
*async shell命令*
缓冲区。如果需要另一个异步命令,则需要重命名此缓冲区,例如使用
M-x unique rename

您可以尝试更改
dired do async shell命令的组件,方法是通知它:

(defadvice shell命令(在新缓冲区中的shell之后(命令和可选输出缓冲区错误缓冲区))
(当(获取缓冲区“*异步Shell命令*”)时)
(使用当前缓冲区“*异步Shell命令*”
(唯一重命名)))
(ad激活“外壳”命令)

请注意,我确实建议使用shell命令Emacs命令,因为它是由dired调用的。

我刚刚设置了以下命令,删除dired run shell命令的当前定义,以便将专用缓冲区名称传递给shell命令:

(defun dired run shell命令(command)
让我们来看看
(查找文件名处理程序(目录文件名默认目录)
'shell命令])
(如果处理程序(应用处理程序的shell命令(列表命令))
(shell命令
(生成新的缓冲区名称)
(concat“*Shell命令输出:''Command'*”)))
;;返回nil,以便在dired bunch文件中进行NCOC。
零)

这是另一个有效的选择,可惜一个人只能接受一个答案-谢谢。