Статьи

2 года Vim и PHP перегонены

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

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

основы

Для эффективного использования Vim вам необходимо помнить о некоторых предпосылках.

Прежде всего, почти все буквы на клавиатуре соответствуют удобной команде, которую можно запустить в обычном режиме . Вы отменяете, вставляете, перемещаете hjkl, переходите между словами и так далее для каждой буквы.

Научившись использовать эти команды и режимы обычной вставки, визуального и визуального блоков, добавьте эти директивы в ваш .vimrc:

syntax on
filetype on
filetype plugin on

что обеспечит активацию плагинов, связанных с PHP, в файле .php. Например, подсветка синтаксиса для языка PHP включена в большинство дистрибутивов Linux, поэтому вам не нужно загружать внешние файлы, чтобы включить его, а только добавлять эти строки.

Плагины: Command-T

Я знаю, Command-T написана на Ruby, но она очень хорошо работает для обнаружения классов в кодовой базе.

При запуске Vim с Command-t <Leader> t откроет список файлов, в которые вы можете поместить последовательность символов, используемых для фильтрации их по имени, в текущем каталоге:

[No Name]                                                     0,0-1          All
> PHPUnit/Extensions/Selenium2TestCase/Session.php                              
  PHPUnit/Extensions/Selenium2TestCase/Session/Cookie.php
  PHPUnit/Extensions/Selenium2TestCase/Session/Storage.php
  PHPUnit/Extensions/Selenium2TestCase/SessionStrategy.php
  PHPUnit/Extensions/Selenium2TestCase/Session/Timeouts.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Url.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Frame.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Window.php
  PHPUnit/Extensions/Selenium2TestCase/Session/Cookie/Builder.php
  PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Shared.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/AlertText.php
  PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Isolated.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/AcceptAlert.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/DismissAlert.php
  PHPUnit/Extensions/Selenium2TestCase/SessionCommand/GenericAccessor.php
  vendor/phpunit/Tests/Regression/578.phpt
  vendor/phpunit/Tests/Regression/684.phpt
  vendor/phpunit/Tests/Regression/783.phpt
  vendor/phpunit/Tests/Regression/1021.phpt
GoToFile                                                      1,1            All
>> phpsession

В этом случае я ввел phpsession, чтобы найти (без учета регистра) файл PHPUnit / Extensions / Selenium2TestCase / Session.php, который в соответствии с соглашением PSR-0 содержит класс PHPUnit_Extensions_Selenium2TestCase_Session.

В фильтре вы можете опустить косые черты и произвольные символы: единственное требование — то, что вы вводите, содержится в относительном имени файла, которое выглядит как строка. После нахождения вашего файла (вы также можете перемещаться вверх и вниз, если это не первый выбор), нажмите Enter, чтобы открыть его, или <Ctrl> T, чтобы открыть его на новой вкладке. Вместо этого нажмите <Ctrl> C, чтобы закрыть выбор.

Автозаполнения?

Command-T заменяет NERDTree и аналогичные инструменты для отображения файловой системы внутри Vim; Вы также можете использовать Sheel для организации файлов. В моем случае Command-T также заменил другой популярный инструмент, ctags, который генерирует серию тегов, которые можно использовать для автозаполнения из исходного кода проекта.

Что мне нужно делать с Command-T, когда мне нужно автозаполнение для класса, так это просто быстро открыть его на вкладке и использовать <Ctrl> N в режиме вставки, чтобы получить базовое автозаполнение слова. Это продвинет вас далеко вперед, прежде чем вам понадобится сгенерировать теги для вашего проекта и поддерживать их.

Плагины: snipMate

snipMate имеет возможность быстро генерировать код из шаблонов, называемых сниппетами; повторяющуюся деятельность по написанию ‘public function x ()’ можно облегчить, генерируя большую ее часть через фрагмент кода.

После установки поместите новые фрагменты в .vim / snippets / php / trigger.snippet (вам нужно будет создать папку php /). В режиме вставки триггер <TAB> вставит фрагмент и поместит вас в позицию $ {1}; дальнейшие вкладки переместят вас к следующим заполнителям.

Учитывая этот фрагмент в .vim / snippets / php / test.snippet:

class ${1} extends PHPUnit_Framework_TestCase
{
    public function test${2}()
    {
        ${3}
    }
}

в режиме вставки тест <TAB> MyTest <TAB> WillWork <TAB> сгенерирует:

class MyTest extends PHPUnit_Framework_TestCase
{
    public function testWillWork()
    {
        
    }
}

размещение вас внутри метода, где вы сможете сразу написать тестовый код.

Выводы

Несколько плагинов и много упражнений — это то, что вам нужно для написания PHP-приложений на Vim: сравнение не между Eclipse и Vim, а между Eclipse и Unix + Vim. Помните, что каждая подпрограмма, сохраненная в вашей IDE, не может быть повторно использована внутри Continuous Integration, хотя вполне естественно, что команды Unix переносятся туда.