开发者

How can I fix my delete key in VIM over ssh? (Mac OS X)

When I use VIM in the terminal on my local machine (Mac OS X Snow Leopard), the delete key is really backspace (i.e., destructive backspace).

When I SSH into a particular server, for some reason it's regular delete (i.e., delete the character under the cursor).

How can I change it to be consistent? I've tried a dozen solutions, but nothing seems开发者_运维技巧 to work.

Checking the "Delete sends Ctrl-H" box in Terminal Preferences->Advanced doesn't work -- this is non-destructive backspace.

I've tried about a hundred different key mappings in VIM, to no avail.

Interestingly, the key works as expected when I'm typing commands in VIM (e.g., : <something>) -- it's only screwed up when I'm editing the actual text. Any ideas?


This worked for me:

:set backspace=indent,eol,start

I'm not sure exactly what it does but it is listed as a possible solution here and here. I found this line in a vimrc file distributed with Ubuntu where the behavior of the mac "delete" key (otherwise known as the "backspace" key) works as expected without any other configuration.

The behavior I was experiencing was a bell sound (no characters deleted) when pressing the mac "delete" key (otherwise known as the "backspace" key) in insert mode. I am using a compiled version of vim 7.3 on "amazon linux" over ssh from a mac. Pressing <ctrl-v><delete> when in insert mode resulted in ^?.


Couple of ideas to try:

  • In your .vimrc file on the remote server, add this line:

    set term=linux
    
  • In your .bash_profile file (or whatever corresponds to your shell of choice) on the remote server:

    stty erase ^H
    

    Note: to make this work correctly, you must type ctrl-v, then ctrl-h to type the ^H character.

    Also, make sure "Delete sends Ctrl-H" is checked in your Terminal prefs.


Try this: http://www.alecjacobson.com/weblog/?p=295

I fixed the problem by changing my Terminal.app settings. Under Terminal > Preferences choose Advanced. Check “Delete sends Ctrl-H”. Now, vi and vim should understand the delete key more intuitively.

Note: Mapping the “delete” key in my vimrc file seemed like probably the correct way to do this, but that’s a lot of trouble. Is there any reason not to do it this way?


Try adding

set <Del>=<C-v><Del>

to the vimrc on the target machine. Here you must type <C-v><Del> while being logged on the target machine. If this does not work, check verbose imap <Del>: this should tell you whether some plugin has remapped <Del> in insert mode.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜