Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 维姆:什么';默认的退格行为是什么?_Vim - Fatal编程技术网

Vim 维姆:什么';默认的退格行为是什么?

Vim 维姆:什么';默认的退格行为是什么?,vim,Vim,我正在设置我的vimrc文件。我知道在插入模式下添加set backspace=indent,eol,start可以使退格“正常”运行(删除缩进、换行、预先存在的字符),但我不知道是否需要将这一行添加到文件中,还是默认行为 我试着在没有那行代码的情况下运行Vim,即使没有vimrc文件,退格仍然正常工作。我应该提到的是,我在一台MacBook上,按键实际上被标记为“delete”,但我假设这与此无关。一般来说,在Mac键盘上被称为“delete”并不重要。从技术上讲,苹果通过称该键为“向后删除”

我正在设置我的vimrc文件。我知道在插入模式下添加
set backspace=indent,eol,start
可以使退格“正常”运行(删除缩进、换行、预先存在的字符),但我不知道是否需要将这一行添加到文件中,还是默认行为


我试着在没有那行代码的情况下运行Vim,即使没有vimrc文件,退格仍然正常工作。我应该提到的是,我在一台MacBook上,按键实际上被标记为“delete”,但我假设这与此无关。

一般来说,在Mac键盘上被称为“delete”并不重要。从技术上讲,苹果通过称该键为“向后删除”来解决这个问题。我们传统上认为的删除键,苹果称之为“向前删除”。要获得“正向删除”行为,必须按fn+Delete。

现在,回到真正的问题上来,维姆。。。OS X中退格的默认设置如下(
/usr/share/vim/vimrc
):

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

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


还有两个其他因素可能会导致vim中有关退格的奇怪行为

  • 按此键时,终端软件可配置为发送删除或退格(此选项通常称为“发送^H打开…”)。

  • vim对控制字符的处理(例如退格/删除)因终端字符串而异,我发现
    xterm color
    通常在OSX的终端仿真器中效果最好

  • 我在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.
    
    因此,单击backspace只会删除在当前插入模式和当前行中插入的内容。这使得在插入模式下删除非常困难

    使用默认的退格选项也会将旧字符保留在屏幕上,直到退出到正常模式,它们才会消失

    正如@Andon所说,虽然它正在被你的系统vimrc覆盖。所以你应该把这条线放在你的vimrc中,以防你把它移到另一个没有相同系统vimrc的系统


    您可以通过运行
    vim-u NONE
    在没有vimrc的情况下测试vim,并将使用默认的退格设置运行。

    Hmm,因此我想我的困惑实际上是源于找到/使用哪个vimrc文件。我可能需要发布一个新问题。谢谢您的帮助!@ivan:首先加载的是系统范围的vimrc文件,并且当vim加载用户vimrc时(通常为~/.vimrc)。您可以在自己的配置文件中覆盖系统范围内的任何设置,但如果您不这样做,它将采用系统范围内的默认设置。这就是为什么很难确定“默认设置”是什么“是-这实际上取决于系统的配置方式。我建议您运行:
    vim--version
    以确定您的系统vimrc配置为什么,在OSX中应该是/usr/share/vim/vimrc.Ah,现在我明白了。我已经在使用version命令来尝试确定情况,但是一路上有点困惑。在两个不同版本的vim(7.3预装,7.4 MacVim)之间跳转没有任何帮助,深夜和所有这些环境变量也没有帮助:)