2

无论出于何种原因,当我按下backspaceemacs(终端版本)时,它会删除光标之前的字符,但 emacs GUI(对于 Mac)中的相同按键会删除光标下的字符。normal-erase-is-backspace-mode任何人都可以根据emacs会话是否在GUI中向我指出如何设置的方向吗?

根据记录,在这两种情况下C-h kbackspace密钥都绑定到DEL

4

3 回答 3

4

我在 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)你应该对这里特别感兴趣。

于 2012-06-26T15:49:27.827 回答
1

如果 emacs 正在使用窗口系统,或者它是终端会话,则该函数display-graphic-p将返回。你可以这样做:tnil

(setq normal-erase-is-backspace (display-graphic-p))
于 2012-06-26T15:49:47.970 回答
0

你使用的是什么版本的 Emacs?您必须配置任何东西才能使退格起作用,这似乎很可疑。

从...开始

emacs -Q

并描述退格是如何工作的。

于 2012-06-26T15:59:42.440 回答