无论出于何种原因,当我在emacs(终端版本)中按backspace
时,它会删除光标前的字符,但是在emacs GUI(对于Mac)中按下相同的键会删除光标下的字符。任何人都可以指向我如何设置normal-erase-is-backspace-mode
取决于emacs会话是否在GUI中?
对于记录,根据C-h k
,backspace
密钥在两种情况下都绑定到DEL
。
答案 0 :(得分:3)
我在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)
在这里应该特别感兴趣。
答案 1 :(得分:1)
如果emacs正在使用窗口系统,则函数display-graphic-p
将返回t
,如果是终端会话,则nil
将返回(setq normal-erase-is-backspace (display-graphic-p))
。你可以这样做:
{{1}}
答案 2 :(得分:0)
您使用的是什么版本的Emacs?你应该为退格工作配置任何东西似乎非常可疑。
从
开始emacs -Q
并描述退格如何运作。