退格键删除后面的字符,而不是前面的字符

Backspace key deletes following character, not preceding character

首先,抱歉我的英语不好..

我已经在 linux mint 上安装了 emacs,并且设置了自己的配置。 一切正常,只是向后键删除了右边的字符,(但它应该删除左边的)。 我怎样才能改变这个关键comportement? 我已经尝试用它来编码,但是很难改变我编码的方式。 我在互联网上看过,但没有找到这个特定问题的答案。

我的后退键就像删除键(我正在 mac air 上工作,所以我没有 del 键,这可能会导致问题?)

谢谢。

这是您的答案:C-h r(打开 Emacs 手册),然后是 g DEL Does Not Delete。手册的那个节点恰好说明了这个众所周知的问题。解决方案?将其放入您的初始文件中:

(normal-erase-is-backspace-mode 0)

我是如何找到那个 Emacs 手册节点的?

我用了i,搜索当前手册的索引。我使用 Icicles,这让我可以使用子字符串匹配来完成(您也可以使用 vanilla Emacs 来完成,但您需要对其进行配置)。

所以我只是做了 i backspace S-TABIcicles 中的S-TAB 执行适当的样式补全;TAB 执行香草 Emacs 补全)。

C-h r i backspace S-TAB - 这就是您所需要的。

这将打开 Emacs 手册并在索引中查找 backspace 作为索引条目的一部分。所以我看到了这些完成候选(节点名称):

<BACKSPACE> vs <DEL>
<DEL> vs <BACKSPACE>
c-electric-backspace
C-S-backspace 
normal-erase-is-backspace
normal-erase-is-backspace-mode 

除了 c-electric-backspaceC-S-backspace 之外的每个条目实际上都指向同一个节点,DEL Does Not Delete。 (可以重复使用C-down依次访问每个候选节点,看看它们是什么。)


即使在普通的 Emacs 中,您也有一种方法可以适当地搜索手册:a 在信息(即在手册中)是命令 info-apropos .试试看:a backspace RET.

但是,它会在您安装的 所有 手册中搜索子字符串匹配项。搜索所有已安装的手册需要 相当长的时间

它(在我的机器上)生成一个信息缓冲区,其中列出了这些搜索结果:

Apropos Index
*************

Index entries that match `backspace':

*Menu:

* BACKSPACE (Info mode) [info]:          (info)Help-^L.
* C-S-backspace [emacs]:                 (emacs)Killing by Lines.
* c-electric-backspace [emacs]:          (emacs)Program Modes.
* normal-erase-is-backspace-mode [emacs]: (emacs)DEL Does Not Delete.
* normal-erase-is-backspace [emacs]:     (emacs)DEL Does Not Delete.
* <BACKSPACE> vs <DEL> [emacs]:          (emacs)DEL Does Not Delete.
* <DEL> vs <BACKSPACE> [emacs]:          (emacs)DEL Does Not Delete.
* Backspace key invokes help [efaq]:     (efaq)Backspace invokes help.
* Help invoked by Backspace [efaq]:      (efaq)Backspace invokes help.
* backspace [elisp]:                     (elisp)Basic Char Syntax.
* c-electric-backspace [ccmode]:         (ccmode)Hungry WS Deletion.
* electric-backspace (c-) [ccmode]:      (ccmode)Hungry WS Deletion.
* normal-erase-is-backspace-mode [ccmode]: (ccmode)Hungry WS Deletion.
* backspace-function (c-) [ccmode]:      (ccmode)Hungry WS Deletion.
* c-backspace-function [ccmode]:         (ccmode)Hungry WS Deletion.
* <backspace> [ccmode]:                  (ccmode)Hungry WS Deletion.
* C-c <backspace> [ccmode]:              (ccmode)Hungry WS Deletion.
* C-c C-<backspace> [ccmode]:            (ccmode)Hungry WS Deletion.

只有 (emacs) 的那些在 Emacs 手册中。顺便说一句,您会注意到 Emacs 常见问题解答和 CC 模式手册也记录了您所看到的相同问题 - 这是一个长期存在的陷阱。

可以使用命令 M-x normal-erase-is-backspace-mode 作为直接补救措施。信息取自这里:link;这个文档在之前的回答中有提到。