Delete Key is changing letter case in Vim

The problem was that in my .vimrc I had

set term = ansi

Took that out and all was well - sorry about the troubles, thanks!


The problem

The Del key generates the code ^[[3~ in my urxvt terminal on GNU/Linux, and might generate a similar code in your OS X terminal.

My theory is that Vim for some reason doesn't recognize any keybinding for the delete key, and simply tries to interpret the string ^[[3~ as input instead. ^[ is the keycode for the Esc key (which puts you in normal mode), and ~ is the Vim command for changing the case of a letter (from normal mode).

You can confirm the keycodes I mentioned by pressing Ctrl+V Esc and Ctrl+V Del from insert mode in Vim. Ctrl+V means that the next character should be inserted as text instead of being interpreted by the editor.

The solution

As for the solution, try editing your Vim configuration file (presumably ~/.vimrc):

vim ~/.vimrc

And append the following code to it:

nmap <Ctrl-V><Del> x
imap <Ctrl-V><Del> <Ctrl-V><Esc>lxi

I hope this helps :)


Well, this took forever for me to resolve. When using vim I was in Iterm2 on macOSx to access a Centos5 system via gnu screen. Not only was the delete key changing the letter case, and causing delays in vim, but also the arrow keys didnt work. I think the problem was simply in the old configuration on the Centos5 machine, but may have had something to also do with either iterm or gnu screen, but i hadnt had this issue at all on any Centos6 systems.

What did Not work: I compile vim 7.4, that did not resolve it, so don't go down that path. I also tried these configurations that did not work

"set term=ansi
"set backspace=indent,eol,start
"set nocompatible
"fixdel

":if &term == "xterm"
":if &term == "xterm-256"
":  set t_kD=^V<Delete>
":endif

"nmap <Ctrl-V><Del> x
"imap <Ctrl-V><Del> <Ctrl-V><Esc>xi

I finally found the solution.

Solution: Set the following in .vimrc

set term-builtin_xterm

Additionally, you may also notice that 256 colors have an issue on this same system. So if it helps, you can check your TERM environment variable echo $TERM. If it is xterm you can switch it to 256 colors, e.g. export TERM='xterm-256color to get the color schemes back on track for this same system. reference

Tags:

Vim