当前位置:  开发笔记 > 编程语言 > 正文

Vim PHP omni完成

如何解决《VimPHPomni完成》经验,为你挑选了4个好方法。

我正试图在Vim中使用PHP自动完成功能.现在当我做一个$blog = new Blog(); $blog->然后点击CTRL+X CTRL+O我希望omnicompletion返回类中的所有函数Blog.

相反,它返回整个项目的所有函数.我为我的项目构建了ctags,如下所示:ctags -R *

有没有办法让自动完成上下文感知?



1> Jess Telford..:

catchmeifyoutry的答案通过添加注释来指出一个解决方法,例如/* @var $myVar myClass */在您使用omnicomplete之前的行之前,但这很麻烦,并且在编写注释时,您也可以自己编写函数名称.

解决方案:phpComplete

这是一个Vim脚本:phpComplete

您仍然需要为您的类生成一个标记文件,但是您可以在文件中使用omni complete,就像这样(根据脚本页面上的描述进行修改);

此修补程序允许进行文件内检查,因此您不需要注释.

$blog = new Blog;
... 
$blog->Blah(); // <-- complete without comment 

它还允许支持单例实例化:

$instance = Class::getInstance(); 
$instance->completeMe(); // sweet completion


遗憾的是,对于Vim来说,omnicompletion支持一般都很糟糕,特别是对于像PHP这样的解释性语言.您最好的选择是通过编码或提高意识来自行改善支持.

2> ax...:
" Assuming Vim 7 (full version) is installed,
"   adding the following to your ~/.vimrc should work.

filetype plugin on
au FileType php set omnifunc=phpcomplete#CompletePHP

" You might also find this useful
" PHP Generated Code Highlights (HTML & SQL)                                              

let php_sql_query=1                                                                                        
let php_htmlInStrings=1

" Hope this helps!

(通过http://www.linuxquestions.org/questions/linux-software-2/vim-omin-completion-for-php-621940/#post3155311)



3> catchmeifyou..:

如果标签文件包含Omnicompletion只会工作,类的定义,并且变量声明.

直截了当的解决方案

一般来说,这意味着您需要在和部件之后保存并(重新)生成标签文件,但尝试之前.这是因为PHP omni-complete函数将在tags文件中查找变量的类声明.class Blog { ... }$blog = new Blog();$blog-> $blog

(顺便说一句,如果您在缓冲区中打开了标签文件,请在重新生成后重新加载它.)

替代

vim documentation(:help ft-php-omni)还定义了一种方法,它不需要在tags文件中索引变量,而是使用前一行的特定注释:

/* @var $myVar myClass */
$myVar->

然而,类定义仍然没有需要在标签文件,和注释,需要您要使用的全方位完整的每次.所以输入一个新的PHP文件仍然不会给你很好的omni-completion :(

只是一个想法

也许有可能即时生成一个临时标签文件(如taglist插件)只是未保存的缓冲区,并允许omni-complete也使用它?我不是一个伟大的vim黑客...



4> 小智..:

这个按预期工作:

https://github.com/shawncplus/phpcomplete.vim

我只是错过了pveview中的函数参数!

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有