使い方 - Emacsで複数のシェルを実行する方法




emacs 使い方 windows (5)

私はWindows 7でEmacs 23.3.1を使用しています。私はemacsからMxシェルを使ってシェルを実行できることを知っています。 私は同じ時間に複数のシェルウィンドウを持ちたいのですが、Mxシェルを2回目に入力すると同じシェルウィンドウが開きます。

異なるシェルウィンドウを持つ方法はありますか?


4年以上経ってからは、この問題を時々見ている人がいるので、シェルを読み込んでその名前をつけるために書いた簡単な関数を公開します。 そうすれば、ファイルのソートに専念している場合は "sort-files"、ハイブクエリを実行する場合は別の "hive"というシェルに名前を付けることができます。 私は毎日それを使用しています(emacs 24で):

(defun create-shell ()
    "creates a shell with a given name"
    (interactive);; "Prompt\n shell name:")
    (let ((shell-name (read-string "shell name: " nil)))
    (shell (concat "*" shell-name "*"))))

MultiTerm見ると、Emacsの複数の端末をもっと簡単に管理できます。


これにより、使用しているバッファの中に新しいシェルインスタンスが自動的に生成されます。 そのようなMSやsomethingsやインスタント喜びに結び付けてください:

(defun new-shell ()
  (interactive)

  (let (
        (currentbuf (get-buffer-window (current-buffer)))
        (newbuf     (generate-new-buffer-name "*shell*"))
       )

   (generate-new-buffer newbuf)
   (set-window-dedicated-p currentbuf nil)
   (set-window-buffer currentbuf newbuf)
   (shell newbuf)
  )
)

letを使ってリライトすることを推奨してくれたphilsのおかげで、結果はさらにひどいカッコになってしまいました。:\


これは、関数を呼び出すたびに新しいシェルを開き、必要に応じて自動的に名前を変更します。 追加されたプラスは、ファイルをリモートで編集している場合(dired / tramp ...)、これはリモートホスト上のシェルを開き、リモートホスト名で自動的に名前を変更します:

(defun ggshell (&optional buffer)
(interactive)
(let* (
       (tramp-path (when (tramp-tramp-file-p default-directory)
             (tramp-dissect-file-name default-directory)))
       (host (tramp-file-name-real-host tramp-path))
       (user (if (tramp-file-name-user tramp-path)
         (format "%[email protected]" (tramp-file-name-user tramp-path)) ""))
       (new-buffer-nameA (format "*shell:%s*" host))
       (new-buffer-nameB (generate-new-buffer-name new-buffer-nameA))
       (currentbuf (get-buffer-window (current-buffer)))
       )
  (generate-new-buffer new-buffer-nameB)
  (set-window-dedicated-p currentbuf nil)
  (set-window-buffer currentbuf new-buffer-nameB)
  (shell new-buffer-nameB)
  ))

シェルのバッファの名前Mx rename-bufferで変更することができます。 その後、2番目のシェルを起動することができます。





emacs