emacs shell:输入一次,到处运行

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。我时间不够,所以我会把它作为读者的练习。

+0

你是我的英雄。 – Ishpeck 2012-02-24 16:45:29