Может войдёшь?
Черновики Написать статью Профиль

Мастерство Vim: PHP Documentor и Ultisnips

перевод Laracasts Мастерство Vim

Это перевод видео-урока с Laracasts, серия Vim Mastery, урок №22PHP Documentor and Ultisnips от . Перевод обновлён . Опечатка? Выдели и нажми Ctrl+Enter.

(0:00)
Давайте поговорим о том, как мы обращаемся с docblocks (комментариями). Например, простой класс PHPAuthenticate в Lavarel. Представьте, что тут не было бы этого комментария. И вы должны были бы создать его вручную. Вот так: @param Request $request и потом снова... Кошмар. Давайте найдем способ автоматизировать это насколько возможно. Есть плагин PHP Documentor для Vim, который отлично справится с этим. Возьмем это. Переключимся в наш файл plugins.vim.

(0:30)
И затем внизу добавим это. Однако, до установки этого плагина, если мы переключимся назад, вы увидите, что также должен быть установлен плагин vmustache. Поэтому давайте возьмем также его. Теперь я переключусь в свой файл .vimrc. Сохраню его, перезагружу этот файл и выполню :PluginInstall. Хорошо, давайте посмотрим. Закроем это и посмотрим, какой следующий шаг.

(1:00)
Если я переключусь обратно, можно увидеть... хорошо, мы установили его. Но теперь вы должны создать папку pdv_template_dir, которая указывает на ваши шаблоны. Тут есть пример. Давайте перенесем это в .vimrc и вставим, например, сюда. Хорошо. Мы указываем папку, где должны быть расположены наши шаблоны. То, что по умолчанию, подходит. Далее, что мы делаем, так это... Установим сочетание для <leader>d.

(1:30)
Однако, это пока не заработает. К примеру, я нахожусь здесь и нажму ,d, заметьте, мы получаем ошибку “Неизвестная функция UltiSnips”. Мы видим тут, если мы хотим использовать автоподстановку по Tab и все такое для docblocks, он требует наличие инструмента UltiSnips. Мы уже познакомились с одним пакетом сниппетов, называемом snipmate, но другой, такой же популярный, называется UltiSnips. И вам он может понравиться даже больше. Если это окажется необходимым, вы можете даже удалить snipmate. Это нормально.

(2:00)
Это означает, что мы должны скопировать этот адрес. Вернемся в наш файл plugins.vim. Добавлю это внизу. И повторим. Сохраним и выполним установку. Хорошо, закроем все лишнее. Теперь давайте попробуем снова: ,d и готово. Пишем: Handle authentication. Теперь, вы можете видеть, как умно плагин читает аргументы в любых вариациях и применяет их тут. Как это, по сравнению с тем, что было раньше?

(2:30)
Поместите курсор на метод, <leader>d, напишите свое описание и, в основном, все готово. Но, что касается UltiSnips, проверим-ка... Если мы сделаем так: UltiSnips и далее я просто продолжу нажимать Tab, передвигаясь по предложенным командам, вы увидите ту, которая называется UltiSnipsEdit. Команда откроет специальный файл с вашими сниппетами для текущего типа файла. Например, если я сохраню файл, обратите внимание, он назван php.snippets.

(3:00)
Это потому что текущий файл является файлом для PHP. Когда я выполняю эту команду, она знает, что я ищу сниппеты для PHP. Давайте попробуем. Пишем: snippet и endsnippet, и дальше просто напишем “это тест” и назначим горячую клавишу test. Теперь, если я закрою этот файл, то могу ввести test, Tab и автоподстановкой получу “это тест”. Но заметили ли вы, как мы получили дополнительный отступ? Попробуем еще раз:

(3:30)
test, Tab — текст будет добавлен сюда. Это потому что... если я вернусь назад... Блок свернут, поэтому я нажму zo, чтобы развернуть его... Нам нужно удалить этот отступ. Если мы сделаем это еще раз: test, Tab — текст будет вставлен, как следует. Давайте сделаем другую. Что если, мы создадим smet для статичного метода? Я могу написать PHPpublic static function $1 и далее ($2) для аргументов и, наконец $3.

(4:00)
Попробуем это. Переключусь назад и введу внизу smet, Tab, my function. Теперь я снова нажму Tab, чтобы перейти к следующей точке. Не работает. Он пытается сделать автоподстановку. Если мы переключимся в Chrome, чтобы посмотреть UltiSnips... Да, вы можете видеть, мы загрузили его. Если вы хотите дополнительные сниппеты, можете их добавить. Я никогда этого не делаю этого. Итак, мы можем сделать настройку.

(4:30)
Перейдем сюда, в мой файл .vimrc... давайте посмотрим. Я нажму PHPCtrl+U чтобы перейти чуть повыше. Примерно тут. UltiSnips и вставлю это сюда. Разворачиваем сниппет по Tab. Для переключения вперед я также установлю Tab. А для переключения назад установлю Shift+Tab. И, кстати, это должно перейти наверх. Чтобы удостовериться, я просто выйду отсюда и зайду снова. Перейдем в наш класс PHPAuthenticate.

(5:00)
И теперь внизу я напишу smet, Tab, myfunction, Tab, $arg, Tab... Вы поняли идею. Теперь я могу ввести Shift+Tab, чтобы переключаться между ними. Вот так. Хорошо. Эти команды помогут с функционалом сниппетов. Вы можете поменять snipmate на UltiSnips, если вы предпочитаете его. Как бы там ни было, вернемся к docblocks, они также под контролем. Сейчас я могу ввести Ctrl+D и он создаст блок документации за меня.

(5:30)
Напишем Here is the description, Tab, это перенесет нас к типу... Здесь строка, может быть. Вы поняли основную идею. Теперь давайте удалим это. Введу заглавную L, заглавную D, заглавную G и, далее, k, чтобы перейти на строчку вверх, и введу d. Если я введу gg, чтобы перейти снова вверх... Теперь, если бы тут не было документации, мы могли бы создать ее очень просто: <leader>d, Handle authentication — готово. Или, если нам нужно изменить это, то нажмем Tab, Illuminate\Http\Request. И также на забудьте, \мы назначили <leader>pf для форматирования файла. Использование PSR-2 — это из урока, где мы устанавливали php-cs-fixer. Хорошо, увидимся на следующем уроке.

Как вы считаете, полезен ли этот материал? Да Нет

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.