重新啟動緩衝區中的 shell 進程

重新啟動緩衝區中的 shell 進程

在 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 RETMy Shell緩衝區中執行此操作,則新 shell 將在同一緩衝區中啟動。不幸的是,如果您在另一個緩衝區中執行此操作,則會得到一個名為 的新緩衝區My Shell<2>,這不太漂亮。我認為後一種影響可以透過以下方式消除提供建議function shell,以便My Shell在實際運行實際shell函數之前切換到緩衝區。

相關內容