在vim中调试慢速php omnicomplete

在vim中调试慢速php omnicomplete,php,vim,Php,Vim,我正在一个大型项目中使用vim和php OmniOn。我有一个ctags文件,并使用: au FileType python set omnifunc=pythoncomplete#Complete au FileType php set omnifunc=phpcomplete#CompletePHP au FileType javascript set omnifunc=javascriptcomplete#CompleteJS au FileType html set omnifunc=h

我正在一个大型项目中使用vim和php OmniOn。我有一个ctags文件,并使用:

au FileType python set omnifunc=pythoncomplete#Complete
au FileType php set omnifunc=phpcomplete#CompletePHP
au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
au FileType html set omnifunc=htmlcomplete#CompleteTags
au FileType css set omnifunc=csscomplete#CompleteCSS
au FileType xml set omnifunc=xmlcomplete#CompleteTags

set complete=""
set complete+=.
set complete+=k
set complete+=b
set complete+=t
在我的配置中

目前,omni complete将在5秒以上完成php内置。它不会完成我的标签列表中的任何内容,但是
将完成标签列表中的项目。我原以为complete=t会检查标记文件

通过
完成标记非常快,所以不确定是什么让我的omni完成速度如此之慢

如果我在我的home目录和这个项目目录中编辑一个新的.php文件,那么内置于omni complete中的php会很快完成

感谢您在调试时提供的提示/帮助。理想情况下,我想让omni同时完成内置和ctags,正如complete=t文档所建议的那样

Omnicompletion和
completion是完全独立的。
complete
选项仅通过
/
影响完成。如果希望omnicompletion也尝试使用标记,则需要修改completion函数来完成此操作


在PHP的情况下,它确实考虑标签,但这只是它所做的一部分。omnicompletion比标记的完成慢的原因是它更复杂。在标记文件中搜索与光标之前的内容匹配的单词与解析当前缓冲区的上下文、查找可以在那里完成的所有有效信息类型、将其限制为与光标之前的文本匹配的单词完全不同,所有这些

FileType
autocmd都是不必要的,如果实际函数名发生变化,它们将导致问题。这些都将由相关的
ftplugin
脚本正确设置。此外,第一行
集合complete
中的引号也不起作用<代码>设置完成=相当于该行,因为
是Vim的注释字符。不知怎的,我的标签文件>500M,C-p和omni的作用不同。我已经把标签文件压缩到了1.5米,现在它的效果肯定要好得多。我还得再玩一玩,读一些不同之处。谢谢