Vim不允许使用退格键

39

文件foo包含以下文本:

This| is a line.
如果我将光标放置在|处,进入插入模式,然后按下backspace,什么也不会发生。如果我输入一些内容,我可以删除我已经输入的内容,但只能返回到插入开始的位置。例如,如果我将光标放在行末,并键入word,我可以删除word,但无法删除.或其左侧的任何内容。
这实在很烦人。这是哪个vim设置导致的?

1
有些人说你可以通过在emacs中使用vim设置来解决这个问题。 - zortacon
1
你可以将光标放在字符上,然后按下d再按l。这将向右删除一个字符。 - scrappedcola
@scrappedcola,你也可以通过简单地键入“x”来节省一个按键。但是,如果你想要更改字符,你可以使用“r<newchar>”,或者进入插入模式,使用“cl”,这非常方便。(事实上,“c<any motion>”也可以工作) - Austin Adams
2个回答

80

解释

'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.

修改退格键的行为

尝试将以下内容添加到您的.vimrc文件中:

set backspace=indent,eol,start " backspace over everything in insert mode

相同命令的简写版本:

set backspace=2

-1
如果你正在使用vim:
vim ~/.vimrc

如果你正在使用vi:
vi ~/.exrc

然后将这行代码添加到文件的顶部:
set nocompatible

保存文件,这样应该就解决了。

vimrc的存在足以触发nocompatible,请参阅:help 'compatible'。此外,你的答案隐含地依赖于Vim的默认cpoptions。具体来说,缺少v标志,请参阅:help cpo-v。除非你有非常充分的理由这样做,不要使用~/.exrc。这通常是个不好的建议。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接