From the Emacs manual, node DEL Does Not Delete:
On a text terminal, if you find that <BACKSPACE>
prompts for a Help
command, like Control-h
, instead of deleting a character, it means
that key is actually sending the BS
character. Emacs ought to be
treating <BS>
as <DEL>
, but it isn’t.
In all of those cases, the immediate remedy is the same: use the
command M-x normal-erase-is-backspace-mode
. This toggles between the
two modes that Emacs supports for handling <DEL>
, so if Emacs starts in
the wrong mode, this should switch to the right mode. On a text
terminal, if you want to ask for help when <BS>
is treated as <DEL>
, use
<F1>
; C-?
may also work, if it sends character code 127.
To fix the problem in every Emacs session, put one of the following
lines into your initialization file. For the first
case above, where <BACKSPACE>
deletes forwards instead of backwards, use
this line to make <BACKSPACE>
act as <DEL>
:
(normal-erase-is-backspace-mode 0)
For the other two cases, use this line:
(normal-erase-is-backspace-mode 1)
Another way to fix the problem for every Emacs session is to
customize the variable normal-erase-is-backspace
: the value t
specifies the mode where <BS>
or <BACKSPACE>
is <DEL>
, and nil
specifies the other mode.
I found this information in the Emacs manual using i backspace S-TAB
, with Icicles. In Icicles, S-TAB
does "apropos"-style completion, which means that it checks here for backspace
as a substring, not just as a prefix, of the completion candidates.
If you try i backspace TAB
then you won't find any completion candidates, because the actual candidates you need to match are these, none of which begin with backspace
:
<BACKSPACE> vs <DEL>
<DEL> vs <BACKSPACE>
c-electric-backspace
C-S-backspace
normal-erase-is-backspace
normal-erase-is-backspace-mode