无论出于何种原因,当我按下backspace
emacs(终端版本)时,它会删除光标之前的字符,但 emacs GUI(对于 Mac)中的相同按键会删除光标下的字符。normal-erase-is-backspace-mode
任何人都可以根据emacs会话是否在GUI中向我指出如何设置的方向吗?
根据记录,在这两种情况下C-h k
,backspace
密钥都绑定到DEL
。
无论出于何种原因,当我按下backspace
emacs(终端版本)时,它会删除光标之前的字符,但 emacs GUI(对于 Mac)中的相同按键会删除光标下的字符。normal-erase-is-backspace-mode
任何人都可以根据emacs会话是否在GUI中向我指出如何设置的方向吗?
根据记录,在这两种情况下C-h k
,backspace
密钥都绑定到DEL
。
我在 Mac 下的 emacs 配置中使用以下内容来使退格正常工作:
;; 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)))
即使您使用的是守护程序模式,该解决方案也足够强大,可以完美运行。
(ns-do-applescript 显然是为了提升新框架。)
(window-system)
你应该对这里特别感兴趣。
如果 emacs 正在使用窗口系统,或者它是终端会话,则该函数display-graphic-p
将返回。你可以这样做:t
nil
(setq normal-erase-is-backspace (display-graphic-p))
你使用的是什么版本的 Emacs?您必须配置任何东西才能使退格起作用,这似乎很可疑。
从...开始
emacs -Q
并描述退格是如何工作的。