在 emacs 中,我經常打開多個 shell 緩衝區並使用 rename-buffer 來追蹤它們。有時,我會因為點擊太多 ^D 而無意中關閉 shell,或者我所在的系統會自動讓非活動 shell 逾時。有沒有辦法在同一個緩衝區中啟動一個新的外殼?因為我已將緩衝區重新命名為殼輸入 Mx shell 將會在新的 shell 中啟動殼緩衝區,而不是目前緩衝區。
答案1
使用 M- 運行以下 emacs lisp 程式碼,而不是 Mx shell:
(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>
,這不太漂亮。我認為後一種影響可以透過以下方式消除提供建議function shell
,以便My Shell
在實際運行實際shell
函數之前切換到緩衝區。