我在一个大项目中使用vim和PHP omnicompletion.我有一个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内置的ins.它不能完成我的标签列表中的任何内容,但是< C-p>将完成标签列表中的项目.我以为complete = t会检查标签文件.
标签通过< C-p>完成.是非常快,所以不知道什么是压低我的全方位完成是如此惊人的慢.
如果我在我的家庭目录编辑一个新的.PHP文件vs这个项目dir,内置omni完成的PHP很快.
感谢您提供的任何提示/帮助.理想情况下,我想让omni同时完成内置和ctags完成,这似乎是由complete = t docs建议的.
解决方法:
Omnicompletion和< C-p>完成是完全独立的.完整选项仅通过< C-p> /< C-n>影响完成.和< C-x>< C-1>.如果您想要omnicompletion也尝试使用标记,那么您需要修改完成函数来执行此操作.
在PHP的情况下,它确实考虑了标签,但这只是它的一部分. omnicompletion比标签完成慢的原因是它更复杂.在标记文件中搜索与光标之前匹配的单词与解析当前缓冲区的上下文完全不同,查找可在此处完成的所有有效信息类型,将其限制为与光标前的文本匹配的单词,并呈现那.