Vim:默认的退格行为是什么?

我正在设置我的vimrc文件。 我知道添加set backspace=indent,eol,start允许退格在插入模式下表现为“正常”(删除缩进,换行符,预先存在的字符),但我很困惑我是否需要将此行添加到我的文件或者它是否是默认行为。

我试过运行Vim而没有使用该行,即使没有vimrc文件,退格仍然正常工作。 我应该提到我在MacBook上,而关键字实际上标记为“删除”,但我认为这是无关紧要的。


通常,在Mac键盘上它被称为“删除”并不重要。 从技术上来说,苹果公司通过调用这个关键字“向后删除”来解决这个问题。 我们传统上认为它是一个删除键,Apple称之为“Forward Delete”。 要获得“Forward Delete”行为,您必须按fn + delete。

现在,回到真正的问题,vim ... OS X中退格的默认设置是this( /usr/share/vim/vimrc ):

设置backspace = 2“更强大的backspacing

如果你想要在你的问题中讨论的行为,你的自定义vimrc应该覆盖这个。


还有其他两个因素会导致vim中的退格行为出现奇怪的行为。

  • 当您按此键时,终端软件可以配置为发送删除或退格键。 (这个选项通常被称为“send ^ H on ...”)

  • vim对控制字符的处理(例如backspace / delete)取决于您的终端字符串,我发现xterm-color在OS X的终端仿真器中通常效果最好。

  • OS X中的我的终端设置:

    将终端声明为: xterm-color

    []删除发送Ctrl-H(未选中)


    vi兼容退格可以设置

    set backspace=
    

    这将关闭以下内容。

    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.
    

    因此,按退格键将只删除当前插入模式和当前行中插入的内容。 这使得在插入模式下删除非常困难。

    使用默认的退格选项也会将旧字符留在屏幕上,并且在退出到正常模式之前它们不会消失。

    正如@Andon所说,它正在被你的系统vimrc覆盖。 因此,您应该将该行放入vimrc中,以便将其移至另一个不具有相同系统vimrc的系统。

    您可以通过运行vim -u NONE来测试没有vimrc的vim -u NONE并使用默认的退格设置运行。

    链接地址: http://www.djcxy.com/p/49451.html

    上一篇: Vim: what's the default backspace behavior?

    下一篇: Ideal C Setup for Vim