这里说的是vim/gvim。我们有时候,尤其是刚刚装好vim/gvim的时候,常常会遇到在进入冒号命令模式后,无法通过TAB键补全的情况。比如,我们输入一个字符't',然后按TAB,结果出现的是‘:t^I’,也就是说后面补出来的是‘^I’这个 诡异的玩意。这种情况同时也会很诡异的消失——当我们创建了我们的VIM个性配置文件.vimrc/_vimrc后,哪怕这个文件只是一个空文件,这种情况就消失了。

一开始我怀疑是键盘映射的问题,这种问题在键盘映射出错时比较容易出现。可是悲剧的是我哪怕换掉了所有的键盘映射,都不能解决。不过这其中发现了一个更奇怪的现象——如果按SHIFT+TAB是可以正常补全的!

接着我就怀疑是不是vim个性配置的问题。于是定位到了有.vimrc/_vimrc和没有的差别。就把问题完整的固定重现出来了。既然没有这文件时就出现了,有了就不会。那必然只有一种解释——没有的时候采用了某种默认配置!

默认配置也是配置,于是我找遍了几乎所有的VIM配置文件,并用排除法排查。结果还是武功而返,这个时候我想除了看看文档外,只有看代码最后一条路了!(亏得我啊,早该看文档了。)

那么看什么文档呢,自然是“help vimrc”了。因为问题定位到这里了嘛。进入到vimrc文档中,文档说了一个问题,如果发现任何vimrc文件或者启动vim时有类似的参数、变量,那么默认会进入到【compatible-default】模式,而且还特地解释了这个中模式的意思就是compatible选项设置为默认的off。反过来说,就是如果没有vimrc这类设置,默认compatible即使on咯!

继续看文档“help compatible”,我靠,原来说的就是是否兼容vi模式啊!(vim和vi可不是一回事儿,前者对后者进行的极大的扩展,操作习惯也有所不同)。原来文章开头说的问题就是因为误打误撞进入了vi兼容模式,兼容vi就没有这个自动补全的特性了。

所以问题解决起来就很简单了,把compatible设置为off就可以了。方法很简答咯,进入vim的冒号命令模式,输入命令【set compatible!】即可!