在iTerm2上的Vim中删除键不起作用


16

首先,我在插入模式下输入了一些内容,例如

Hello

在此阶段,如果我没有退出插入模式,则delete可以工作,并且可以根据需要删除整个单词。

如果我退出插入模式,然后再次打开插入模式,Hello则无法通过删除delete。但是新输入的内容可以删除。

我已经重命名了.vimrc,问题仍然存在。

我通过iterm在远程服务器上做了一些测试,没有遇到相同的问题。

造成此问题的原因是什么?如何解决?


“删除”是指退格?可以用插入模式删除整个单词Ctrl-W,试试看。如果那什么都不做,说明您的vim出了点问题。我使用iTerm 2,从未遇到过此类问题。
oarfish

是的,我可以在正常模式下使用dwdw+ shift删除单词。但是backspacectrl+ w都不能在我上面提到的第二种情况下工作。

但是可以在vim之外的普通命令行上使用退格键吗?很奇怪。
oarfish 2015年

@oarfish,是的,我可以,而且在远程服务器vim中,我没有这样的问题,只是突然发生了。我暂时不知道。
2015年

您有什么vim版本?我有vim 7.4.481,无法重现该问题。
jan.h 2015年

Answers:


16

这是vim的一项功能,尽管IIRC默认不会启用它。

backspace在VIM的设置,并且可以设置三个不同的参数:indenteol,和start

如果您运行:help backspace,它将告诉您:

Influences the working of `<BS>`, `<Del>`, `CTRL-W` and `CTRL-U` in Insert
mode.  This is a list of items, separated by commas.  Each item allows
a way to backspace over something:

value     effect
indent    allow backspacing over autoindent
eol       allow backspacing over line breaks (join lines)
start     allow backspacing over the start of insert; CTRL-W and CTRL-U
          stop once at the start of insert.

没有为您设置的是start

如果添加set backspace=indent,eol,start到.vimrc,则可以在插入模式下对所有内容进行退格。


“功能” ...出于某种原因,我看到默认情况下在全新安装了vim最新安装的macOS 10.13上启用了该功能。此解决方案仍然可以解决问题。
泰勒·埃德米斯顿

9

我也有这个,自然文本处理默认值对我来说是错误的。

  • MacBook Pro(15英寸,2018年)
  • 10.14.3(莫哈韦沙漠)
  • Iterm2 3.2.7

转到Preferences > Profiles > Keys并加载默认预设,Natural Text Editing并删除所有关于deletedelete行为的条目。之后,它会按预期工作。


1
相同,除了我只是删除了有关“ Del->”的条目,但没有添加“ Sends ^ H”绑定。然后它按预期工作。
DagW

@DagW确认,^ H绑定是不必要的。
Salyangoz

2
为了找到正确的答案,不得不深入研究错误的帖子,非常感谢!
RecuencoJones

1
我在Tmux和Iterm2上长期遇到这个问题,直到在这里找到您的帖子,我才找到解决方案。
1234

1
是! 这是关于iterm配置,而不是vim本身。
罗德里罗克19'Dec 31,19:
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.