在emacs中,我希望打开多个shell,输入一次命令,并让它在每个shell中运行 - 类似于multixterm(http://freecode.com/projects/multixterm)的方式。
答案 0 :(得分:7)
通过一些最小的测试,这将做:
(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。假设您的shell位于/bin/bash
中。如果没有,请相应地更改该位。
如果你做了很多,你会想要将它绑定到你最喜欢的键组合。借用和修改comint-send-input
中的代码是可能的,这样您只需在一个shell的提示符下输入所需的命令,点击您的密钥并将该命令同时发送到所有shell。我的时间很短,所以我会把它作为读者的练习。