Таким образом, вы хотите запустить 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 переносятся туда.