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

时间:2013-09-13 03:14:15

标签: vim

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

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

2 个答案:

答案 0 :(得分:9)

通常,它在Mac键盘上称为“删除”并不重要。从技术上讲,Apple通过调用“Backward Delete”键来逃避这一点。而我们传统上认为是删除键,Apple称之为“前向删除”。要获得“转发删除”行为,您必须按 fn + 删除

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

  

设置backspace = 2“更强大的退格

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


还有另外两个因素可能导致vim中退格的奇怪行为。

  1. 可以将终端软件配置为在按此键时发送删除或退格。 (此选项通常称为“发送^ H on ...”)

  2. vim对控制字符的处理(例如退格/删除)因终端字符串而异,我发现xterm-color通常在OS X的终端模拟器中效果最佳。

  3. OS X中的我的终端设置:

      

    将终端声明为:xterm-color

         
        

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

      

答案 1 :(得分:9)

可以使用

设置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,并使用默认的退格设置运行。