В emacs я часто открываю несколько буферов оболочки и использую rename-buffer для их отслеживания. Иногда я случайно закрываю оболочку, нажимая слишком много ^ D, или нахожусь в системе, которая автоматически отключает неактивные оболочки. Есть ли способ запустить новую оболочку в том же буфере? Поскольку я переименовал буфер в командной оболочке, Mx shell запустит оболочку в новом буфере оболочки , а не в текущем буфере.
2 ответа
Вместо оболочки Mx запустите следующий код emacs lisp, используя M-:
(shell (current-buffer))
Это не идеально, но дает вам большую часть того, что вы хотите. Поместите этот код в ваш файл запуска .emacs :
(defun my-shell-mode-hook ()
"Added to shell-mode-hook. This function runs every time function shell
starts a shell."
(rename-buffer "My Shell" 'unique))
(add-hook 'shell-mode-hook 'my-shell-mode-hook)
Не стесняйтесь изменить строку "My Shell" на другое имя. Если вы выполняете M-x shell RET находясь в буфере My Shell , то новая оболочка запускается в том же буфере. К сожалению, если вы сделаете это в другом буфере, вы получите новый буфер с именем My Shell<2> , который не так хорош. Я думаю, что последний эффект можно устранить, посоветовав функцию shell , чтобы она переключалась в буфер My Shell до фактического запуска реальной функции shell .
