emacsshell:键入一次,到处运行



在emacs中,我希望打开多个shell,键入一次命令,并在每个shell中运行它——类似于multixterm(http://freecode.com/projects/multixterm)。

通过一些最小的测试,这将实现:

(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。我时间紧迫,所以我把它留给读者练习。

相关内容

  • 没有找到相关文章

最新更新