backspace not working, even after attempted fix
I tried following the instructions in Backspace key not working in vim , but I still have the same problem: BACKSPACE inserts a ^?
That is to say: inserting set bs=indent,eol,start
in my ~/.vimrc
did not solve the problem.
I am sure that I am loading the correct source file (I did a test of another setting, and the change propagated).
I am using: Vi IMproved 7.2
on Ubuntu with Gnome. In the terminal application, backspace works properly.
Solution 1:
Vim seems to be confused about what your terminal sends as the erase character. As this varies between ^?
(Ctrl+?, or DEL
for "delete") and ^H
(Ctrl+H or BS
for "backspace"), Vim depends on someone telling it what to expect.
That shouldn't happen unless
- you're changing related settings in your
vimrc
, - you're changing the value of the
TERM
environment variable, - your terminal information database is messed up, or
- you're suffering from a gremlin infestation.
For troubleshooting, try to run the command stty erase ^?
before starting Vim, and see if this fixes it. Enter the ^?
not separately as ^
and ?
, but by first pressing Ctrl+V, then your Backspace key. If your shell is well-behaved, this should produce a literal representation of whatever your terminal sends when you hit that key.
Solution 2:
Found this question while searching for something mildly related, and thought I'd post a pedantic (but possibly helpful) follow-up.
Most modern versions of stty(1) (including the version shipped with GNU Coreutils) interpret the two-character sequences ^
?
and ^
h
as the control sequence ASCII DEL and ASCII BS (respectively). Or more generally, two-character sequences starting with ^
as their equivalent ASCII control character.
So the two following commands are equivalent:
stty erase '^?'
stty erase ^VDEL
Solution 3:
If you are using gnome-terminal then there should be a setting to have backspace emulate ^H. There are similar settings in other terminal emulators; it's the first place I would go since no one else has mentioned it.