- 中文
- English
PHPCD,全称 PHP Completion Daemon,译为 PHP 补全服务。PHPCD 实现了 Vim 的 omni 补全接口,提供 PHP 相关的智能补全和定义跳转服务。
PHPCD 的 VimL 部分基于phpcomplete.vim,感谢原项目贡献者的努力。原项目的 3k+ 行代码已经被裁剪为 1.5k 行,可维护性大为增强。
因为 PHPCD 利用 PHP 的反射机制进行补全和跳转,所以 PHPCD 几乎不需要事先生成索引文件,启动速度、补全速度和跳转速度都非常快,代码也非常简洁。
PHPCD 目前只能配合NeoVim工作,这是一个艰难的抉择。
- 快、轻、强
- 静态调用
Class::method()
显示静态成员和方法;动态调用$class->method()
显示非静态成员变量和方法 - 真正识别
self
,static
和$this
上下文环境 - 支持通过多种方式推断变量类型:
- 变量类型注解
/* @var $yourvar YourClass */
、/* @var YourClass $yourvar */
- 使用
new
初始化类实例$instance = new Class;
- 函数(全局函数、成员函数和匿名函数)参数的类型提示
function (Foo $foo) { // .. }
- 使用函数块注释中
@return
制定函数返回值的类型
- 变量类型注解
- 补全成员方法和成员属性的时候自动显示块注释
- 支持内建类的方法、属性、常量的补全
- 增强型定义跳转ctrl+]
- PHP 5.3+
socket 扩展- PCNTL 扩展
- Msgpack 0.5.7+ 扩展
- Composer 支持
- NeoVim
推荐使用Vim-Plug管理 Vim 插件。
安装 Vim-Plug 后,添加:
Plug 'phpvim/phpcd.vim', { 'for': 'php' }
Plug 'vim-scripts/progressbar-widget' " 用来显示索引进度的插件
然后执行:PlugInstall
进行安装。
在配置文件中指定 PHPCD 为 PHP 的 omni 补全引擎:
autocmd FileType php setlocal omnifunc=phpcd#CompletePHP
首先运行 composer update
更新依赖并生成自动加载文件,然后打开 NeoVim。
打开一个 php 文件,如果一切正常的话,几秒钟后 NeoVim 状态栏会显示更新进度条。进度条走完则可开始使用。
补全按Ctrl+xCtrl+o,跳转按ctrl+]。