22

当我在本地机器(Mac OS X Snow Leopard)上的终端中使用 VIM 时,删除键实际上是退格键(即破坏性退格键)。

当我通过 SSH 连接到特定服务器时,由于某种原因,它是常规删除(即删除光标下的字符)。

我怎样才能改变它以保持一致?我已经尝试了十几种解决方案,但似乎没有任何效果。

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

我在 VIM 中尝试了大约一百种不同的键映射,但无济于事。

有趣的是,当我在 VIM 中键入命令(例如,: <something>)时,该键按预期工作——它只是在我编辑实际文本时才搞砸。有任何想法吗?

4

4 回答 4

17

这对我有用:

:set backspace=indent,eol,start

我不确定它到底做了什么,但它在此处此处被列为可能的解决方案。我在随 Ubuntu 分发的 vimrc 文件中发现了这一行,其中 mac“删除”键(也称为“退格”键)的行为按预期工作,无需任何其他配置。

我遇到的行为是在插入模式下按 mac“删除”键(也称为“退格键”)时发出铃声(没有删除字符)。我在“amazon linux”上使用来自 mac 的 ssh 上的 vim 7.3 编译版本。<ctrl-v><delete>在插入模式下按会导致 ^?。

于 2014-03-13T20:49:06.133 回答
8

几个想法尝试:

  • .vimrc远程服务器上的文件中,添加以下行:

    set term=linux
    
  • .bash_profile远程服务器上的文件(或任何与您选择的 shell 对应的文件)中:

    stty erase ^H
    

    注意:要使其正常工作,您必须先输入ctrl- v,然后再输入ctrl-h来输入^H字符。

    此外,请确保在您的终端首选项中选中“删除发送 Ctrl-H”。

于 2011-07-02T02:33:19.280 回答
4

尝试添加

设置 <删除>=<C-v><Del>

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

于 2010-11-11T19:58:03.233 回答
4

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

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

注意:在我的 vimrc 文件中映射“delete”键似乎是正确的方法,但这很麻烦。有什么理由不这样做吗?

于 2012-04-10T03:45:11.483 回答