转载

利用vim打造PHP_IDE

为啥是vim

  • vim党:

    如果你是一个vim党, 那么一切都懂得,习惯了vim,很难再回到别的编辑器或者IDE。

  • 轻量级:

    尝试过eclipse 、zend stdio等,PhpStorm同事有过分享,确实非常强大。但他们的缺点都是很重量级,太大、太占资源。

  • 学习成本:

    eclipse这些IDE各种快捷键、功能等都需要花不少时间去学习;

  • 自由度高:

    vim插件实在太多了, git上一大堆,实在不行还可以自己写一个;这个用的不爽那就换别的,可以玩的很开心- – ;

开始之前的声明

  • 难度较高:

    vim插件流本来就是有点极客的选择, 入手难度较高,新手请勿尝试

  • VIM VS Emacs/sublime/IDE:

    仁者见仁智者见智,各有优缺点, 更不用与emacs、sublime等对比了。

    IDE的优势在于开箱即用、功能强大,虽然你可能摸不到北,用不到那么强大的功能;

    VIM等就具备无限的扩展性,就是一切都需要配置,不适合新手玩;

    总之自己用的爽就行了。

  • 细节:

    我不打算详细的介绍每一个细节, 前面说了不适应新手玩; 毕竟如果你连如何安装插件

    都不懂,自己独自折腾的难度和痛苦程度简直是令人发指的; 而且最重要的一点在于每个人

    都有自己的习惯,适合自己的才是好的,”一千个vim党有一千个不同的vimrc文件”, vim配置简直

    是太私人定制了;

插件管理

安装插件很繁琐, 推荐使用Vundle 来管理,杀手级插件; 

自动补全

自动补全是IDE引以为傲的功能, 毕竟有些函数名太长太难记了。 VIM实现自动补全其实多少有点不智能,基本是靠正则瞎猜,这是相比IDE确实有所不足的地方。 不过基本也算够用。 具体实现方法: * 原生内置:  VIM 原生内置可以使用ctrl + p ,ctrl + n 等快捷键实现上下文的自动补全; * neocomplcache:  neocomplcache 功能非常强大, 非常流畅;  缺点是容易和别的插件冲突, 目前我在用的就是这货 * YouCompleteMe:  YouCompleteMe 是一个很不错的插件,不过很悲催的对PHP没有原生支持,但据说效果也不错, 但我没有用过 * 其他:  还有一些不错的插件;  

语法高亮

没有语法高亮绝对不能活, vim默认对php有简单的高亮的, 但太弱了;  * php.vim:      看名字就懂了,专门针对php的一个插件,很给力;      不仅支持高亮,同时还附带语法检查的功能; 

语法检查

* php -l:  这个其实是php自己的语法检查,很弱,  不推荐用,可以用插件别的搞定这个事情; * php.vim:  前面说过了,保存文件的时候会自动检查语法,少个";"什么的都会在保存文件的时候报错提示滴;  

tag跳转

这个在读代码或者做重构以及大项目使很用; 同样的相比IDE,vim的插件实现功能上稍微不足, taglist 会在极个别情况下不同文件中存在同名方法等会跳转错误 - -; 一般手动更新下tag文件就搞定了。 * taglist + ctags:  配置略微麻烦, 但配置完了定期更新下tags文件就好了;嫌麻烦的还可以写脚步自动更新,也可以  在拉最新主干代码使自动刷新下tags文件; * cscope:  功能太强大了以至于上手难度远超taglist(视vim版本和编译参数有可能需要重新编译vim);  我目前使用较少,毕竟一般情况下taglist就足够了;  

代码审查

手误经常还是有的,所以必要的代码检查还是有用的; 这点是我略微有点吐槽的地方,vim 下似乎没有一个很给力的插件可以检查到php中使用了未定义的变量。 这个我是有教训的, 手误拼错了变量名导致线上bug的情况还是有的。 * php_localvarcheck:  这个可以检查代码中使用了未定义的变量, 有的话会变红提示;  但这货只支持在函数块中检查,不在函数中的就无能为力了;   一般情况下够用; 目前没发现更好的替代品了 * vim-phpqa:  大型武器来了,看名字就知道了,非常牛逼;  可以支持语法检查、代码风格审查、设计模式检查、代码命名审查、未使用的代码审查...  同时还可以自定义其他规则;  其实它是后台调用了phpcs和phpmd来实现的;  phpcs 是 PHP_CodeSniffer的简称,是PEAR中的一个用来检查PHP代码是否符合编码规范的扩展包;  phpmd 是 PHP Mess Detector 的简称,可以类比java的PMD。  选自己合适的标准和rules就好了, 太苛刻的话你会疯的; 我一般设置为:  <pre>   let g:phpqa_codesniffer_args = "--standard=PSR2"  </pre>  

debug

debug目前我没在用;  * Xdebug:       后续补充使用体验; 
正文到此结束
Loading...