重新启动缓冲区中的 shell 进程

重新启动缓冲区中的 shell 进程

在 emacs 中,我经常打开多个 shell 缓冲区并使用 rename-buffer 来跟踪它们。有时我会无意中按太多次 ^D 来关闭 shell,或者我所在的系统会自动使不活动的 shell 超时。有没有办法在同一个缓冲区中启动一个新 shell?因为我已经将缓冲区从输入 Mx shell 将会在新的窗口中启动一个 shell缓冲区,而不是当前缓冲区。

答案1

不要使用 Mx shell,而是使用 M- 运行以下 emacs lisp 代码:

(shell (current-buffer))

答案2

这并不完美,但它可以满足您的大部分需求。将此代码放入您的.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 RETMy Shell缓冲区中执行此操作,则新 shell 将在同一个缓冲区中启动。不幸的是,如果您在另一个缓冲区中执行此操作,那么您将得到一个名为 的新缓冲区My Shell<2>,这不太好。我认为可以通过以下方法消除后一种影响建议函数shell,以便它My Shell在实际运行真实shell函数之前切换到缓冲区。

相关内容