In Emacs habe ich oft mehrere Shell-Puffer geöffnet und verwende rename-buffer, um den Überblick zu behalten. Manchmal schließe ich die Shell versehentlich, indem ich zu viele ^Ds drücke, oder ich verwende ein System, das inaktive Shells automatisch abschaltet. Gibt es eine Möglichkeit, eine neue Shell im selben Puffer zu starten? Da ich den Puffer vonHülseDurch Eintippen von „Mx shell“ wird eine Shell in einer neuenHülsePuffer, nicht der aktuelle Puffer.
Antwort1
Führen Sie anstelle der Mx-Shell den folgenden Emacs-Lisp-Code mit M- aus:
(shell (current-buffer))
Antwort2
Das ist zwar nicht perfekt, aber Sie bekommen damit das meiste, was Sie wollen. Fügen Sie diesen Code in Ihre .emacs
Startdatei ein:
(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"
Sie können die Zeichenfolge gerne in einen anderen Namen ändern . Wenn Sie dies tun M-x shell RET
, während Sie sich im My Shell
Puffer befinden, wird die neue Shell im selben Puffer gestartet. Wenn Sie dies jedoch in einem anderen Puffer tun, erhalten Sie leider einen neuen Puffer mit dem Namen My Shell<2>
, was nicht so schön ist. Ich denke, der letztere Effekt kann durch Folgendes eliminiert werden:BeratungFunktion shell
, sodass sie My Shell
vor der tatsächlichen Ausführung der shell
Funktion zum Puffer wechselt.