4

emacs 内で、複数のシェルを開いて、コマンドを 1 回入力し、各シェルで実行したいと考えてます。

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、必要なコマンドを入力するだけで、開いているすべてのシェルに送信されます。これは、シェルが にあることを前提としています/bin/bash。そうでない場合は、それに応じてそのビットを変更します。

これを頻繁に行う場合は、お気に入りのキー コンボにバインドする必要があります。comint-send-input1 つのシェルのプロンプトで必要なコマンドを入力し、キーを押して、そのコマンドをすべてのシェルに同時に送信できるように、コードを借用して変更することができます。時間がないので、これは読者の課題として残しておきます。

于 2012-02-23T22:30:51.207 に答える