为啥是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: 后续补充使用体验;