Vim 用于 php 个框架

Vim for php frameworks

我已经花了两天时间试图用 VIM 为一个框架创造一个良好的工作环境,在这种情况下,laravel。

一如既往的完美,但是有一个很重要的问题:

我已经尝试了通过 google 找到的所有内容:

-phpcomplete:尽管在我的其他项目中运行良好,但似乎对 composer 很生气。不识别框架的外观或常用方法。

-ctags: 对一些方法有帮助,但对 omnicompletion 还是一团糟。

-phpcomplete-extended 和 phpcomplete-extended for laravel:作者不再维护此插件(合乎逻辑,因为框架变化如此之快)所以不起作用没有了。

-PIV,使用标准的 phpcomplete,所以同样的问题。

-padawan.php 我无法让它工作,恕我直言,文档不足

是否有 vim 用户能够正确获得 omnicompletion 功能? 我开始认为我应该从 vim 转移,因为它还没有为这些新技术做好准备 :'(

Grep AppServiceProvider 针对 tags 文件:

AppServiceProvider app/Providers/AppServiceProvider.php /^class AppServiceProvider extends ServiceProvider$/;" c namespace:Furbook\Providers Furbook\Providers app/Providers/AppServiceProvider.php /^namespace Furbook\Providers;$/;" n boot app/Providers/AppServiceProvider.php /^ public function boot()$/;" f class:Furbook\Providers::AppServiceProvider register app/Providers/AppServiceProvider.php /^ public function register()$/;" f class:Furbook\Providers::AppServiceProvider

免责声明:我不是 PHP 程序员,我对 PHP 一无所知。

首先,如果自动完成机制对您的工作必不可少,那么您可能应该为您正在使用的编程语言选择合适的 IDE。 Vim 包括一个 框架 用于自动完成,这并不意味着它适用于所有支持的语言。即使有可用的全方位补全功能,您的里程也可能会有所不同,具体取决于它的开发程度。

根据我在其他问题中收集到的信息(特别是 Vim PHP omni completion), the best PGP completion plugin is phpcomplete,所以我安装了它。

然后我使用以下命令从 here 和 运行 ctags 5.9~svn20110310(在 Debian Jessie 中可用)下载了 laraval:

ctags -R --filter-terminator=php

使用以下测试文件:

<?php
  $example = new AppServiceProvider();
  $example->
?>

当我按下 i_ctrl-x_ctrl-o 时,我得到以下建议:

boot(     f )
register( f )

可以看出,没有很长的方法列表。

我也尝试过使用 Universal Ctags,其中包含 phpcomplete 插件所需的补丁,但为了使其正常工作,我不得不使用以下语法:

ctags -R --fields=+aimS-s --filter-terminator=php .

也就是说,需要额外的 -s。 也许您可以从这里开始工作,并在您的环境中更详细地测试它。

这是我最关心的问题之一,以下是我的首选选项:

  1. Phpactor。我目前的选择,效果很好,它的主要开发人员非常活跃。快速并且有很多重构工具。非常适合作曲家项目。

  2. ctags 我使用 phpcomplete and ctags (patched for php), but still no autocompletion for facades, I resolved this with the Laravel 5 IDE Helper Generator。这个想法是先生成一个包含 类 和方法的 _ide_helper.php 文件,然后创建标签。

我还在我的 vimrc 中创建了一个函数,所以我可以自动生成标签。

function! GenTags()
    if isdirectory("./vendor")
    echo '(re)Generating framework tags'
    execute "!php artisan ide-helper:generate"
    echo '(re)Generating tags'
    execute "!ctags -R --filter-terminator=php"
    else
    echo 'Not in a framework project'
    if filereadable("tags")
    echo "Regenerating tags..."
    execute "!ctags -R --filter-terminator=php"
    else
    let choice = confirm("Create tags?", "&Yes\n&No", 2)
    if choice == 1
    echo "Generating tags..."
    execute "!ctags -R --filter-terminator=php"
    endif
    endif
    endif

    :endfunction

    command! -nargs=* GenTags call GenTags()
GenTags()
  1. eclim

-- 安装eclipse,不要使用eclipse安装器,最好直接解压

--安装eclim,使用eclim installer.

-- 要完成完整的代码,请更改您的模型以扩展 Eloquent 而不是 Model

-- 和插件 YouCompleteMe(你可以试试其他的)

  1. PHP 语言服务器 它比 ctags 更好更自动化。

尽管自动补全仍然比eclipse(eclim)差一点,Php语言服务器是在PHP上开发的,这意味着很多PHP用户可以为项目,它非常活跃并且正在改进。

Plug 'roxma/nvim-completion-manager'

" (optional) javascript

Plug 'roxma/nvim-cm-tern', {'do': 'npm install'} "

"(optional) language server protocol framework

Plug 'autozimu/LanguageClient-neovim', { 'do': ':UpdateRemotePlugins' } "

"(optional) php completion via LanguageClient-neovim

Plug 'roxma/LanguageServer-php-neovim', {'do': 'composer install && composer run-script parse-stubs'}

如果有人想了解更多,可以在 github

查看我的 vimrc

说到 padawan.php 文档确实如此,我没有花足够的时间来使它或多或少有用,但是 padawan 的安装不应该那么难:

  1. 通过 composer global require mkusher/padawan
  2. 安装 padawan.php
  3. 配置你的 $PATH
  4. 安装padawan.vim
  5. 为您的项目生成索引

我不确定 Laravel 项目是否可以开箱即用,或者您仍然需要 ide 帮助程序,但一般 php 应该运行良好。