Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question
up vote 5 down vote accepted

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.

share|improve this answer
Thanks, stty erase ^? worked for me. I added it to my .bashrc file. – dsg Jun 3 '11 at 2:50

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
share|improve this answer

Try adding the following to your .bashrc ( or .profile )
stty erase ^H
That is the character "^" followed by the character "H"
If that does not work, to get "^H" type control-V followed by control-H

See vim help
:help gui-pty-erase

share|improve this answer

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.

Accessing profile in gnome-terminal

Setting backspace behavior

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.