我正在使用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>
不起作用
答案 0 :(得分:1)
SuperTab提供了两种机制:上下文完成和完成链接,两者都记录在help page中。
简而言之,如果光标前的文本与某个模式(如变量或类名)匹配,前者可以切换到不同的(如 omni )完成。后者首先尝试omnicompletion,如果没有匹配则回退到正常的插入完成。