Vim 用于 php 个框架
Vim for php frameworks
我已经花了两天时间试图用 VIM 为一个框架创造一个良好的工作环境,在这种情况下,laravel。
一如既往的完美,但是有一个很重要的问题:
- 我无法让 omnicomplete 正常工作
我已经尝试了通过 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
。
也许您可以从这里开始工作,并在您的环境中更详细地测试它。
这是我最关心的问题之一,以下是我的首选选项:
Phpactor。我目前的选择,效果很好,它的主要开发人员非常活跃。快速并且有很多重构工具。非常适合作曲家项目。
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()
- eclim
-- 安装eclipse,不要使用eclipse安装器,最好直接解压
--安装eclim,使用eclim installer.
-- 要完成完整的代码,请更改您的模型以扩展 Eloquent
而不是 Model
-- 和插件 YouCompleteMe(你可以试试其他的)
- 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 的安装不应该那么难:
- 通过
composer global require mkusher/padawan
安装 padawan.php
- 配置你的 $PATH
- 安装padawan.vim
- 为您的项目生成索引
我不确定 Laravel 项目是否可以开箱即用,或者您仍然需要 ide 帮助程序,但一般 php 应该运行良好。
我已经花了两天时间试图用 VIM 为一个框架创造一个良好的工作环境,在这种情况下,laravel。
一如既往的完美,但是有一个很重要的问题:
- 我无法让 omnicomplete 正常工作
我已经尝试了通过 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
。
也许您可以从这里开始工作,并在您的环境中更详细地测试它。
这是我最关心的问题之一,以下是我的首选选项:
Phpactor。我目前的选择,效果很好,它的主要开发人员非常活跃。快速并且有很多重构工具。非常适合作曲家项目。
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()
- eclim
-- 安装eclipse,不要使用eclipse安装器,最好直接解压
--安装eclim,使用eclim installer.
-- 要完成完整的代码,请更改您的模型以扩展 Eloquent
而不是 Model
-- 和插件 YouCompleteMe(你可以试试其他的)
- 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 的安装不应该那么难:
- 通过
composer global require mkusher/padawan
安装 padawan.php
- 配置你的 $PATH
- 安装padawan.vim
- 为您的项目生成索引
我不确定 Laravel 项目是否可以开箱即用,或者您仍然需要 ide 帮助程序,但一般 php 应该运行良好。