有沒有辦法阻止Emacs退出一旦我啓動退出進程?防止退出程序啓動後Emacs退出?
我偶爾胖手指C-XC-S作爲C-XC-C。恢復正常運行並不是一個可怕的過程,但我很好奇是否有辦法阻止退出過程,這樣我就可以繼續不間斷地打開所有文件。
使用GNU Emacs 24.3.1。在Windows 7下運行Cygwin。
有沒有辦法阻止Emacs退出一旦我啓動退出進程?防止退出程序啓動後Emacs退出?
我偶爾胖手指C-XC-S作爲C-XC-C。恢復正常運行並不是一個可怕的過程,但我很好奇是否有辦法阻止退出過程,這樣我就可以繼續不間斷地打開所有文件。
使用GNU Emacs 24.3.1。在Windows 7下運行Cygwin。
有一個內置的變量,你可以設置爲一個功能,像這樣:
(setq confirm-kill-emacs 'y-or-n-p)
scottfrazer的答案對我來說比以下更合適。
啓用任何緩衝器的Emacs Lock次要模式(emacs-lock-mode
),防止從Emacs的情況下退出你不小心碰到C-XC-C。
從Emacs的Wiki頁面:
的Emacs不能退出,直到緩衝區被殺害或解鎖
添加(emacs-lock-mode)
您.emacs
/文件,以便該鎖在每個Emacs會話中啓用。如果您想要退出Emacs,確實將添加此鎖定*scratch*
緩衝區,這將不得不解鎖。
這樣做的另一種方式是在Emacs中啓動一個進程,例如, M-xshell
或者有一個未保存的文件與緩衝區關聯,這樣做會在Emacs退出時提示您進行確認。
是一個以上,未設置C-XC-C使用global-unset-key
。然後如果你想退出Emacs M-xkill-emacs
。
使用confirm-kill-emacs
,如@scottfrazer建議,是一種方法。
更一般地說,您可以使用kill-emacs-query-functions
在這方面做任何你想做的事情。 (有沒有真正的需要爲他們添加confirm-kill-emacs
,但他們做到了。)
你可能不希望在這方面使用kill-emacs-hook
(這就是kill-emacs-query-functions
是),但要注意的是,如果你遇到它使用apropos
等的kill-emacs-query-functions
經過短短confirm-kill-emacs
一個好處是,你可以要求一個更好的確認:yes
,而不是隻打關鍵y
。例如:
(add-hook 'kill-emacs-query-functions
(lambda() (y-or-n-p "Do you really want to exit Emacs? "))
'append)
這就是我所做的。鍵擊太容易,並且意外擊中了C-x C-c y
,特別是因爲我有類似的鍵綁定(例如,C-x c
,C-x C-x
,C-x C-y
)。
如果你正在尋找一個更短的答案,我已經自上個世紀,在我所有的.emacs文件的底部,這條線:
(shell)
你能解釋一下添加(shell)的功能嗎?我正在通過emacs wiki進行搜索,只是搜索「shell」對於瞭解它的功能有點含糊不清。 –
我在我的回答中提到過它。 '(shell)'實際上啓動了一個Emacs會提示你處於活動狀態並且你真的想退出的進程。 [Shell模式](http://www.emacswiki.org/emacs/ShellMode)。 –
儘管我接受scottfrazer的答案,我很感謝爲所示的替代方法。 –
我找不到這個問題,所以我發佈了同樣的問題:[在退出Emacs之前在C-x C-c之後確認](https://emacs.stackexchange.com/q/13662/5165)。 –