Laravel — Vim для PHP-фреймворков

Я уже потратил два дня, пытаясь создать хорошую рабочую среду с VIM для фреймворка, в данном случае laravel.

Все идеально, как всегда, но есть очень важный вопрос:

  • Я не могу получить полноценную работу

Я пробовал все, что я нашел через Google:

phpcomplete: несмотря на то, что в других моих проектах все работает хорошо, похоже, что злится на композитора. Не распознает фасады и общие методы для каркаса.

Ctags: помогает с некоторыми методами, но все еще беспорядок с омниполнением.

phpcomplete-продлен и phpcomplete-extended для laravel: автор больше не поддерживает этот плагин (логично, так как фреймворки меняются очень быстро), поэтому больше не работает.

PIV, использует стандартный phpcomplete, так же проблема.

padawan.php Не смог заставить его работать, ИМХО плохо документировано

Есть ли какой-нибудь пользователь vim, который смог бы правильно получить функциональность omnicompletion?
Я начинаю думать, что мне следует перейти от vim, так как он не готов к этим новым технологиям: ‘(

введите описание изображения здесь

Grep AppServiceProvider против tags файл:

AppServiceProvider app / Providers / AppServiceProvider.php / ^ class
AppServiceProvider расширяется
ServiceProvider $ /; «c пространство имен: Furbook \ Providers
Furbook \ Providers app / Providers / AppServiceProvider.php / ^ пространство имен
Furbook \ Providers; $ /; «n загрузочное приложение / Providers / AppServiceProvider.php / ^
общественная функция
boot () $ /; «f класс: Furbook \ Providers :: AppServiceProvider
зарегистрировать приложение / Providers / AppServiceProvider.php / ^ публичная функция
register () $ /; «f класс: Furbook \ Providers :: AppServiceProvider

8

Решение

Это было одной из моих главных забот, вот мои предпочтительные варианты:

  1. Phpactor. Мой текущий выбор работает довольно хорошо, и его главный разработчик действительно активен. Быстро и имеет много инструментов рефакторинга. Отлично подходит для композиторских проектов.

  2. Ctags
    я использую phpcomplete а также Ctags (исправлено для php), но автозаполнение фасадов по-прежнему отсутствует, я решил это с помощью 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 installer, лучше распакуйте напрямую

— установите eclim, используйте Эклим установщик.

— Для полного завершения кода измените ваши модели, чтобы расширить Eloquentвместо Model

— и плагин YouCompleteMe (вы можете попробовать любой другой)

  1. PHP Language Server
    Это лучше и автоматизированнее, чем ctags.

Несмотря на то, что автозаполнение все еще немного хуже, чем eclipse (eclim), сервер Php Language разработан на PHP, что означает, что многие пользователи PHP могут внести свой вклад в проект, и он довольно активен и совершенствуется.

Подключите ‘roxma / nvim-complete-manager’

«(необязательно) javascript

Подключите ‘roxma / nvim-cm-tern’, {‘do’: ‘npm install’} «

«(необязательно) структура протокола языкового сервера

Подключите autozimu / LanguageClient-neovim, {‘do’: ‘: UpdateRemotePlugins’} «

«(необязательно) завершение php через LanguageClient-neovim

Подключите ‘roxma / LanguageServer-php-neovim’, {‘do’: ‘установка композитора &&
composer run-script parse-stubs ‘}

Если кто-то хочет знать больше, можете проверить мой vimrc на GitHub

6

Другие решения

Говоря о padawan.php, это правда о документации, я не потратил достаточно времени, чтобы сделать ее более или менее полезной, но установка padawan не должна быть такой сложной:

  1. Установите padawan.php через composer global require mkusher/padawan
  2. Настройте свой $ PATH
  3. Установить padawan.vim
  4. Создать индекс для вашего проекта

Я не уверен, будут ли проекты Laravel работать «из коробки» или вам все еще понадобится ide helper, но общие вещи php должны работать хорошо.

2

Отказ от ответственности: я не программист PHP, и я ничего не знаю о PHP.

Прежде всего, если для вашей работы важен механизм автозаполнения, вам, вероятно, следует выбрать подходящую IDE для языка программирования, с которым вы работаете. Vim включает в себя фреймворк для автозаполнения, что не означает, что оно реализовано для всех поддерживаемых языков. И даже если есть функция всестороннего пополнения, ваш пробег может варьироваться в зависимости от того, насколько хорошо он разработан.

Из того, что я могу собрать в других вопросах (в частности Vim PHP всевозможное завершение), лучший плагин завершения PGP phpcomplete, так что я его установил.

Я тогда скачал Ларавал из Вот и запустил ctags 5.9 ~ svn20110310 (доступно в Debian Jessie), используя следующую команду:

ctags -R --filter-terminator=php

Используя следующий тестовый файл:

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

когда я нажимаю i_ctrl-x_ctrl-o Я получаю следующие предложения:

boot(     f )
register( f )

Как видно, здесь нет длинного списка методов.

Я также пытался использовать Универсальные Ctags это включает исправления, требуемые плагином phpcomplete, но чтобы заставить его работать, я должен был использовать следующий синтаксис:

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

То есть дополнительный -s требовалось
Может быть, вы можете работать здесь и проверить это более подробно в вашей среде.

1
По вопросам рекламы [email protected]