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