emacs shell:输入一次,到处运行
问题描述:
在emacs中,我希望打开多个shell,输入一次命令,并让它在每个shell中运行 - 类似于multixterm(http://freecode.com/projects/multixterm)的方式。emacs shell:输入一次,到处运行
答
随着一些最起码的测试,这会做:
(defun send-to-all-shells()
(interactive)
(let ((command (read-from-minibuffer "Command: ")))
(mapcar #'(lambda (x) (comint-send-string x (concat "\n" command "\n")))
(remove-if-not
#'(lambda (x)
(string= "/bin/bash"
(car (process-command x))))
(process-list)))))
要运行,只是M-x send-to-all-shells
,输入你想要的命令,它会被发送到所有打开的贝壳。这假定你的shell在/bin/bash
中找到。如果不是,则相应地更改该位。
如果你做了这么多,你会想把它绑定到你最喜欢的组合。可以借用并修改comint-send-input
中的代码,以便您可以在一个shell的提示下输入所需的命令,敲击您的密钥并将该命令同时发送到所有shell。我时间不够,所以我会把它作为读者的练习。
你是我的英雄。 – Ishpeck 2012-02-24 16:45:29