如何打开多个终端?

Bai*_*kev 28 emacs

在Emacs中,我经常发现自己需要在各种源文件之间来回切换到各种终端.不过,我觉得我没有一个好办法,有效地做到这一点,它的笨拙,你只能打开一个在Emacs( ,shell,eshellterm).

而且,我需要一种有效的方法来处理多个终端和源文件.

我怎样才能做到这一点?

off*_*by1 18

你当然可以打开多个交互式shell.尝试输入C-u M-x shell RET RET.


Sea*_*ean 18

您可以根据需要一次打开多个终端和外壳.只需使用M-x rename-buffer更改现有的名称*term**shell*缓冲区,你做下一次M-x term或者M-x shell,一个全新的缓冲区将被创建.在这种情况下M-x shell,前缀参数将使您被提示输入新shell缓冲区的名称,如offby1所述.

几年前,我有一份工作,我必须定期登录名为"host01.foo.com","host02.foo.com"等的各种生产服务器.我写了一个像这样的小功能,以使其更容易管理他们所有:

(defun ssh-to-host (num)
  (interactive "P")
  (let* ((buffer-name (format "*host%02d*" num))
         (buffer (get-buffer buffer-name)))
    (if buffer
        (switch-to-buffer buffer)
      (term "/bin/bash")
      (term-send-string
       (get-buffer-process (rename-buffer buffer-name))
       (format "ssh host%02d.foo.com\r" num)))))
Run Code Online (Sandbox Code Playgroud)

然后我把这个命令绑定到(比如说)s-h(超级H),让我只需输入M-5 s-h.如果我还没有命名的缓冲区*host05*,它将启动一个新的终端仿真器缓冲区,重命名为*host05*,并将我ssh到host05.foo.com.如果缓冲区*host05*已经存在,它只会切换到它.相当方便!


Any*_*orn 15

尝试使用MultiTerm打开多个shell.


Tre*_*son 8

您可以使用Emacs Lisp Screen,它模拟GNU Screen并提供简单的键绑定以跳转到许多不同的shell之间.