2010-11-11 86 views
16

当我在本地计算机(Mac OS X Snow Leopard)的终端中使用VIM时,删除键实际上是退格键(即破坏性退格键)。如何通过ssh修复VIM中的VIM删除键? (Mac OS X)

当我SSH进入某个特定的服务器时,出于某种原因它是正常删除(即删除光标下的字符)。

如何将其更改为一致?我已经尝试了一打解决方案,但似乎没有任何工作。

检查终端首选项 - >高级中的“删除发送Ctrl-H”框不起作用 - 这是非破坏性的退格。

我试了一下VIM中的一百个不同的键映射,无济于事。

有趣的是,当我在VIM中输入命令时(如: <something>),键的工作方式与预期相同 - 只有在编辑实际文本时才会使用。有任何想法吗?

回答

1

尝试增加

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

到目标机器上的vimrc。在这里你必须键入< C-v ><删除>当登录目标机器时。如果这不起作用,请检查verbose imap <Del>:这应该告诉你某些插件是否在插入模式下重新映射了<Del>

+0

嗨ZyX,尝试过,但没有去。当我点击我最后看到一个看起来像“:set = ^?”的命令。我在VIM的命令行和我的.vimrc中输入了它;也尝试以相同的方式设置,但没有任何区别。详细的imap 和详细的imap 都表示“找不到映射”。非常令人沮丧的是,正如我所提到的那样,当我实际在提示符下输入VIIM命令时,它的关键作用(作为破坏性的退格)在实际文件中出错。 – Aeonaut 2010-11-14 22:19:27

+0

@Aeonaut很奇怪,因为我可以让''像''工作,'设置 = = '。在我所有的终端上''发送“^ [[3〜',但我看到它发送'^?'的终端。 “破坏性退格”是什么意思?也许你应该尝试'inoremap cl'(我使用这个序列删除了音译插件中的前一个字符,它的工作原理与'backspace'和'delcombine'选项无关)。另请尝试':fixdel'命令。 – ZyX 2010-11-15 04:10:00

7

夫妇的想法尝试:

  • 在远程服务器上的.vimrc文件,加入这一行:

    set term=linux 
    
  • 在你.bash_profile文件(或任何对应于您的外壳选择)在远程服务器上:

    stty erase ^H 
    

    注意:要使这正常工作,您必须键入CTRL - v,然后CTRL - ^h键入^H字符。

    此外,请确保在您的终端设备中检查“删除发送Ctrl-H”。

3

试试这个:http://www.alecjacobson.com/weblog/?p=295

我改变我的Terminal.app设置固定的问题。在终端>首选项下选择高级。选中“删除发送Ctrl-H”。现在,vi和vim应该更直观地理解delete键。

注意:映射我的vimrc文件中的“删除”键似乎可能是正确的方法,但这样做很麻烦。有没有理由不这样做?

13

这为我工作:

:set backspace=indent,eol,start 

我不知道正是它,但它已被列为可能的解决方案herehere。我发现这行代码与Ubuntu分发的vimrc文件中,其中mac“delete”键(也称为“backspace”键)的行为按预期工作,没有任何其他配置。

按MAC插入模式“删除”键(或称为“退格”键)时,我遇到的行为是一个铃声(不删除字符)。我在mac上通过ssh在“amazon linux”上使用vim 7.3的编译版本。在插入模式下按<ctrl-v><delete>导致^ ?.