4

在 emacs 中,我想打开多个 shell,键入一次命令,然后让它在每个 shell 中运行——类似于 multixterm ( http://freecode.com/projects/multixterm ) 的方式。

4

1 回答 1

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

于 2012-02-23T22:30:51.207 回答