Больше чем один emacs терминал

Я становлюсь более привыкшим к выполнению всего из emacs, но кажется, что eshell, оболочка и термин только выполнят один экземпляр каждый. Существует ли способ выполнить несколько терминалов (предпочтительно термин) внутри emacs?

14
задан Cheeso 9 May 2010 в 11:28
поделиться

6 ответов

Вам просто нужно переименовать буфер, вот функция для запуска zsh и запроса имени буфера:

(defun zsh (buffer-name)
  "Start a terminal and rename buffer."
  (interactive "sbuffer name: ")
  (term "/bin/zsh")
  (rename-buffer buffer-name t))
10
ответ дан 1 December 2019 в 07:12
поделиться

Вы можете переименовать термин и начать новый. Пользуюсь примерно таким, брал у кого-то .emacs.

(require 'term)
(defun visit-ansi-term ()
  "If the current buffer is:
     1) a running ansi-term named *ansi-term*, rename it.
     2) a stopped ansi-term, kill it and create a new one.
     3) a non ansi-term, go to an already running ansi-term
        or start a new one while killing a defunt one"
  (interactive)
  (let ((is-term (string= "term-mode" major-mode))
        (is-running (term-check-proc (buffer-name)))
        (term-cmd "/bin/bash")
        (anon-term (get-buffer "*ansi-term*")))
    (if is-term
        (if is-running
            (if (string= "*ansi-term*" (buffer-name))
                (call-interactively 'rename-buffer)
              (if anon-term
                  (switch-to-buffer "*ansi-term*")
                (ansi-term term-cmd)))
          (kill-buffer (buffer-name))
          (ansi-term term-cmd))
      (if anon-term
          (if (term-check-proc "*ansi-term*")
              (switch-to-buffer "*ansi-term*")
            (kill-buffer "*ansi-term*")
            (ansi-term term-cmd))
        (ansi-term term-cmd)))))

Или вы можете иметь только один и запускать в нем сеанс экрана .

2
ответ дан 1 December 2019 в 07:12
поделиться

Я лично использую screen-подобный пакет, который я написал, и есть другая версия, доступная в вики здесь: elscreen. Он предоставляет удобные привязки клавиш для перехода к различным оболочкам.

1
ответ дан 1 December 2019 в 07:12
поделиться

Используйте команду M-x rename-buffer, чтобы дать текущему буферу оболочки новое имя, после чего вы сможете запустить новую оболочку.

17
ответ дан 1 December 2019 в 07:12
поделиться

Вы всегда можете создать новую оболочку с помощью C-u M-x shell

6
ответ дан 1 December 2019 в 07:12
поделиться
2
ответ дан 1 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: