При минимальном тестировании это будет делать:
(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
, введите нужную команду, и она будет отправлена всем открытым оболочкам.Это предполагает, что ваша оболочка находится в /bin/bash
.Если нет, измените этот бит соответствующим образом.
Если вы делаете это много, вы захотите связать это со своим любимым сочетанием клавиш.Можно было бы позаимствовать и изменить код в comint-send-input
так, чтобы вы могли просто ввести нужную команду в командной строке одной оболочки, нажать клавишу и отправить эту команду всем оболочкам одновременно.У меня мало времени, поэтому я оставлю это в качестве упражнения для читателя.