我正在设置我的vimrc文件.我理解添加set backspace=indent,eol,start允许退格键在插入模式下"正常"(删除缩进,换行符,预先存在的字符),但是我很困惑我是否需要将此行添加到我的文件中,或者它是否是默认行为.
即使没有vimrc文件,我也尝试在没有该行的情况下运行Vim,并且退格仍然正常工作.我应该提一下,我在MacBook上,键实际上标记为"删除",但我认为这是无关紧要的.
And*_*man 11
通常,它在Mac键盘上称为"删除"并不重要.从技术上讲,Apple通过调用"Backward Delete"键来逃避这一点.而我们传统上认为是删除键,Apple称之为"前向删除".要获得"转发删除"行为,您必须按fn+ delete.
现在,回到真正的问题,vim ... OS X中退格的默认设置是this(/usr/share/vim/vimrc):
set backspace = 2"更强大的退格
如果您想要在问题中讨论的行为,您的自定义vimrc应覆盖此选项.
还有另外两个因素可能导致vim中退格的奇怪行为.
xterm-colorOS X的终端仿真器通常效果最好.将终端声明为:
xterm-color[]删除发送Ctrl-H (未选中)
可以使用vi兼容退格设置
set backspace=
Run Code Online (Sandbox Code Playgroud)
这将关闭以下内容.
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.
Run Code Online (Sandbox Code Playgroud)
因此,按退格键只会删除当前插入模式和当前行中插入的内容.这使得在插入模式下删除非常困难.
使用默认退格选项也会在屏幕上保留旧字符,并且在您退回到正常模式之前它们不会消失.
正如@Andon所说,虽然它被你的系统vimrc覆盖了.因此,您应该将行放在vimrc中,只需将其移动到另一个没有相同系统vimrc的系统.
您可以通过运行来测试没有vimrc的vim,vim -u NONE并使用默认的退格设置运行.