無論出於何種原因,當我在emacs(終端版)中按backspace
時,它會刪除光標前的字符,但在emacs GUI(對於Mac)中同一按鍵刪除光標下的字符。任何人都可以指示我如何設置normal-erase-is-backspace-mode
,這取決於emacs會話是否在GUI中?如何根據GUI使用情況設置Emacs設置?
根據C-h k
的記錄,在兩種情況下backspace
密鑰都綁定到DEL
。
無論出於何種原因,當我在emacs(終端版)中按backspace
時,它會刪除光標前的字符,但在emacs GUI(對於Mac)中同一按鍵刪除光標下的字符。任何人都可以指示我如何設置normal-erase-is-backspace-mode
,這取決於emacs會話是否在GUI中?如何根據GUI使用情況設置Emacs設置?
根據C-h k
的記錄,在兩種情況下backspace
密鑰都綁定到DEL
。
我用我的emacs配置以下Mac下進行精確的退格工作:
;; Fix Delete key and activate graphical frame.
(defun my-make-frame-hook()
(when (window-system)
(normal-erase-is-backspace-mode t)
(when (fboundp 'ns-do-applescript)
(ns-do-applescript "tell application \"Emacs\" to activate"))))
;; Do this for initial frame...
(my-make-frame-hook)
;; ...and for any subsequently created frame.
(add-hook 'after-make-frame-functions
'(lambda (frame)
(select-frame frame)
(my-make-frame-hook)))
該解決方案是強大的,足以完美地工作,即使你使用daemon模式。
(的NS-DO的AppleScript是提高新幀,效果顯着。)
的(window-system)
應該是特別感興趣的你在這裏。
'(窗口系統)'看起來很有意思,是的。我會記住下次。謝謝! –
檢查一下,我現在喜歡這個!在守護進程模式下防止意外可能對我有所幫助。謝謝! –
如果emacs使用窗口系統,則功能display-graphic-p
將返回t
,如果是終端會話,則返回nil
。你可以這樣做:
(setq normal-erase-is-backspace (display-graphic-p))
雖然類似的方法有一個問題。如果以守護進程模式啓動emacs,則不會使用窗口系統。但是,您可以使用emacsclient創建一個新的框架,該框架將使用已配置的守護程序和窗口系統。這就是爲什麼我原來不得不爲後製作幀函數添加一個鉤子。 –
你使用的是什麼版本的Emacs?看起來很腥,你應該配置任何退格工作。
開始
emacs -Q
,並說明如何退格的作品。
我向你保證,即使在版本23.4中使用庫存Emacs的Cocoa UI時,也需要使用普通擦除後退來手動配置退格。雖然我沒有嘗試刪除v24上的配置。 –
在這兩種情況下綁定到'backspace'的是什麼? 'C-h k'(請在你的問題中加上那個細節) – kindahero