Статьи

Vim для разработки PHP

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

Нижеследующее обсуждение основано на Unim-версии Vim (Linux, Mac OS X), но также применимо почти во всех своих частях к пакетам для платформ Windows. Я также предполагаю, что вы уже немного знакомы с Vim, в частности о разнице между обычным режимом и режимом вставки. В основном, в режиме вставки вы вводите реальный текст, в то время как в обычном режиме ваши нажатия клавиш интерпретируются как команды, а не записываются в поток текста. Вы можете войти в режим вставки, нажав i или a из обычного режима, и вернуться в обычный режим, нажав Esc.

Vimtutor двоичный обычно входят в пакете, и объясняет основные команды лучше , чем это статьи, заставляя практический подход.

Vim против IDE

Текстовые редакторы, такие как Vim и Emacs, очень легки по сравнению с IDE, такими как Netbeans и Eclipse (с PDT ). Это, безусловно, преимущество, которое уравновешивает отсутствие доступных задач, поддерживаемых из коробки, но я хотел бы подчеркнуть их универсальность. Vim и подобные редакторы используют преимущества стандартных инструментов Unix командной строки, которые работают с простым текстовым интерфейсом, вместо того, чтобы заново изобретать колесо с плагинами для каждого вида систем контроля версий и сборки.

Например, проверить синтаксис скрипта очень просто, делегировав внешний синтаксический анализатор языка программирования. Но также просто задействовать любую внешнюю программу, когда вызывается сочетание клавиш или определенная функция, или даже запустить Ant или цель phing . Влияние на настройку автоматизации очень велико: вместо последовательности кликов вы автоматизируете скрипт bash или файл сборки XML.

Синтаксис для запуска внешней команды есть ! затем следует то, что вы написали бы в командной строке, учитывая, что рабочим каталогом является тот, где вы запустили vim:

!php -r 'echo "Hello.";'

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

Получил команды (в обычном режиме)

Некоторые команды довольно стандартны, даже если они являются только ярлыками:

  • y6y выбирает 6 строк текста, начиная с текущей. Замените 6 на произвольное количество строк.
  • o вставляет строку после текущей, а O вставляет строку перед ней. Оба оставляют редактор в режиме вставки.
  • Аналогично, p вставляет содержимое буфера обмена после символа под курсором, а P вставляет его перед.
  • v может использоваться для выделения текста, а V — для выделения полных строк текста (полезно для копирования и вставки). В одном из этих двух визуальных режимов, у копировать выделенный текст в то время как г обрежет.

Обратите внимание, что, в отличие от командных оболочек, поиск в истории команд клавишами вверх и вниз . Попробуйте вставить начало уже введенной команды и завершите его нажатием клавиши «вверх».

Мой .vimrc

Скрытый
файл
.vimrc в вашем домашнем каталоге позволяет вам определять директивы конфигурации, которые будут применяться к каждому файлу, который вы открываете в vim. Это мой .vimrc, прокомментировал для вашего удобства:

" Tab key produces 4 spaces, and tab characters are converted to spaces
set tabstop=4
set shiftwidth=4
set expandtab
set background=dark
" when you start searching text with /, search is performed at every new character insertion
set incsearch
set nopaste
set autoindent
set fileformats=unix,dos
" docblock comments are continued when a newline is inserted
set comments=sr:/*,mb:*,ex:*/
syntax on
filetype on
filetype plugin on
" check syntax with Ctrl + L
autocmd FileType php noremap <C-L> :!/usr/bin/env php -l %<CR>
autocmd FileType phtml noremap <C-L> :!/usr/bin/env php -l %<CR>

Типы плагинов

Директивный плагин filetype позволяет вам определить плагин для включения на основе обнаруженного типа файла (для php-скриптов это, конечно, php .) Все файлы в .vim / ftplugin, чье имя начинается с php, будут автоматически включаться при каждом редактировании файлов. которые содержат код PHP.

Связанные с PHP плагины vim работают в основном путем установки себя в каталог ftplugin. Обычно Vim имеет более одного каталога ftplugin (пользовательская папка в .vim, плюс папка системного уровня), в которую помещаются сценарии общего назначения. Например, эти сценарии настраивают подсветку синтаксиса. Любая специфичная для PHP настройка, которую вы хотите настроить, должна находиться в папке ftplugin, чтобы не мешать общему использованию Vim для других задач, таких как редактирование простого текста.

завершение

Автозаполнение для стандартных языков программирования часто работает сразу после установки, если вы устанавливаете Vim из своих репозиториев. Название этой функции — omnicompletion , и она вызывается последовательностью Ctrl + X, Ctrl + O в режиме вставки, чтобы нажать после того, как вы написали начало функции или класса.

Чтобы настроить автозаполнение для библиотеки или фреймворка PHP с пользовательскими функциями, вы должны попробовать ctags , который периодически анализирует исходный код данной библиотеки и создает список обнаруженных токенов, которые Vim может использовать для обеспечения автозаполнения. Название подразумевает фокус на языке Си, но на самом деле поддерживаются все современные языки общего назначения. Ведущий разработчик проекта Zend Framework предлагает простое руководство по запуску ctags в PHP-проекте.

Существует также очень простой метод автоматического заполнения локальных идентификаторов, таких как переменные и методы: нажатие Ctrl + N в режиме вставки, в то время как часть слова уже была написана, предоставит список возможных дополнений, найденных в текущем файле. Из-за этой комбинации и простоты PHP API, мне обычно не нужны омполнение и подобные инструменты.

Плагины

snippets_emu — это полезный плагин для генерации фрагментов кода, связанных со структурами управления (для, если, в то время) и любым пользовательским сниппером, который вы хотите использовать. Например, я использую его для автоматического определения получателей и установщиков для доступа к закрытой переменной, универсальному коду, который я, скорее всего, буду писать много раз в день.
Интеграция

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