Vim 维姆:什么';默认的退格行为是什么?
我正在设置我的vimrc文件。我知道在插入模式下添加Vim 维姆:什么';默认的退格行为是什么?,vim,Vim,我正在设置我的vimrc文件。我知道在插入模式下添加set backspace=indent,eol,start可以使退格“正常”运行(删除缩进、换行、预先存在的字符),但我不知道是否需要将这一行添加到文件中,还是默认行为 我试着在没有那行代码的情况下运行Vim,即使没有vimrc文件,退格仍然正常工作。我应该提到的是,我在一台MacBook上,按键实际上被标记为“delete”,但我假设这与此无关。一般来说,在Mac键盘上被称为“delete”并不重要。从技术上讲,苹果通过称该键为“向后删除”
set backspace=indent,eol,start
可以使退格“正常”运行(删除缩进、换行、预先存在的字符),但我不知道是否需要将这一行添加到文件中,还是默认行为
我试着在没有那行代码的情况下运行Vim,即使没有vimrc文件,退格仍然正常工作。我应该提到的是,我在一台MacBook上,按键实际上被标记为“delete”,但我假设这与此无关。一般来说,在Mac键盘上被称为“delete”并不重要。从技术上讲,苹果通过称该键为“向后删除”来解决这个问题。我们传统上认为的删除键,苹果称之为“向前删除”。要获得“正向删除”行为,必须按fn+Delete。
现在,回到真正的问题上来,维姆。。。OS X中退格的默认设置如下(
/usr/share/vim/vimrc
):
设置退格=2“更强大的退格
如果您想要您在问题中讨论的行为,您的自定义vimrc应该覆盖此选项
还有两个其他因素可能会导致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)之间跳转没有任何帮助,深夜和所有这些环境变量也没有帮助:)