vim中使用退格键删除字符时遇到异常。网上说需要在.vimrc文件中配置backspace选项值。但是,我在Debian系统和Ubuntu系统上使用系统自带的vim时,没有在.vimrc文件中配置backspace选项值,可以正常使用Backspace键删除字符。后来自己编译了最新版的vim。使用这个vim,确实发现Backspace键删除字符遇到异常。经过排查,终于发现了Debian系统、Ubuntu系统自带的vim版本和自己编译的vim版本的区别。详情如下。配置backspace选项要在vim中正常使用Backspace键删除字符,确实需要正确设置backspace选项的值。:setnocompatible:setbackspace=indent,eol,start在兼容模式下,设置backspace=indent,eol,start也可以,但是删除的字符不会立即显示为空白,显示效果不好。为了与vim5.4及更早版本兼容,:setbackspace=2等同于:setbackspace=indent,eol,start。backspace=indent,eol,start设置项的参数解释如下:indent允许删除自动缩进的内容。如果没有此项,自动缩进添加的空白字符无法用Backspace键删除,手动添加的缩进空格可以删除。eol允许删除换行符。如果没有此项,当该行被删除到开头时,不能用退格键删除换行符,即不能自动删除到上一行。start允许删除进入插入模式之前存在的内容。如果没有此项,则不能删除进入插入模式前已有的内容,只能删除当前插入模式下输入的字符。例如输入三个字符abc,按Esc键退出插入模式,再按a,进入插入模式,输入efg。此时Backspace键可以删除efg,不能删除abc。您可以使用:help'backspace'命令查看该选项的帮助说明。Debian和Ubuntuvim版本在Debian或Ubuntu发行版上配置退格选项。不需要在~/.vimrc中配置backspace选项,Backspace键可以正常使用。原因是系统自带的vim版本会加载一个debian.vim文件,这个文件默认已经设置好了。您可以使用:verbose设置退格键?命令查看退格选项的值及其设置位置。如果自己编译的vim版本使用的是自己源码编译的vim版本,并且没有配置~/.vimrc文件,则会加载源码默认的vim配置文件,并正确配置backspace选项.如果自己配置~/.vimrc文件,则不会加载源码默认的vim配置文件,并且可能没有配置backspace选项,导致backspace键不能用,或者一直不能用.这时候需要主动在~/.vimrc文件中配置backspace选项的值为indent、eol、start。
