Vim如何使用SuperTab或替代方案配置复杂的自动完成

时间:2015-11-10 06:18:26

标签: vim autocomplete

我正在使用SuperTab。默认情况下,它允许我自动完成所有早期使用的文本部分。但是,我还需要自动完成一些语言或文件包。

目前,我可以使用C-x C-u进行omnicomplete,但这不方便。 是否可以在标签页中配置所有自动填充功能?

例如,我想自动完成PHP函数名str_。如果函数不存在,那么脚本必须使用默认的vim自动完成。

任何帮助将不胜感激!非常感谢!

已更新

这是我的SuperTab配置

" Supertab
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabCompletionContexts = ['s:ContextText', 's:ContextDiscover']
let g:SuperTabContextTextOmniPrecedence = ['&omnifunc', '&completefunc']
let g:SuperTabContextDiscoverDiscovery =
            \ ["&completefunc:<c-p>", "&omnifunc:<c-x><c-o>"]

这只使用了omnicompletion for php,但没有自动填充当前缓冲区中的另一个文本,这只在我使用<c-p>时才有效。

当我将下一行添加到.vimrc时:

autocmd FileType *
            \if &omnifunc != '' |
            \call SuperTabChain(&omnifunc, "<c-p>")
            \endif

<c-p>不起作用

1 个答案:

答案 0 :(得分:1)

SuperTab提供了两种机制:上下文完成完成链接,两者都记录在help page中。

简而言之,如果光标前的文本与某个模式(如变量或类名)匹配,前者可以切换到不同的(如 omni )完成。后者首先尝试omnicompletion,如果没有匹配则回退到正常的插入完成。