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

Мастерство Vim: Управление сниппетами

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

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

(0:00)
Когда речь идет о сниппетах, у вас есть несколько вариантов. Но, обычно, у меня очень хорошо работает это расширение. Давайте установим его в этом уроке. ,ev, переместит меня в файл .vimrc. Простите, еще раз, — мы должны перейти в наш файл plugins.vim и вставить это сюда. Вот так. Хорошо, теперь можем вернуться. И, кстати, я просто нажму Ctrl+6 (там, где ^), чтобы перейти к предыдущему файлу, где я работал.

(0:30)
Это удобно, чтобы переключаться между двумя файлами. Давайте сохраним это и запустим установку плагина. Теперь мы установили его. Прежде, чем познакомиться с ним, очень быстро… Если вы вдруг нажмете Escape или какую-либо неправильную клавишу, вы услышите такой звуковой сигнал. Слышали? Весьма раздражает. Просто отключите его совсем. Вот так: я вставлю этот небольшой сниппет сюда. Так мы просто выключим звуковые сигналы об ошибках.

(1:00)
Если я сохраню и нажму теперь Escape или неверную клавишу, то сигнала не будет. Уже не так раздражает. Это небольшой совет. Давайте вернемся к SnipMate. Я создам файл с названием foo.php. И давайте создадим сниппет. Все ваши сниппеты будут сохранены в папке .vim. Конкретно — в папке snippets, которую мы можем создать. Внутри этой папки мы создаем отдельный файл для каждого типа файлов.

(1:30)
К примеру, создадим файл php.snippets. В этом файле будут PHP-сниппеты. Попробуем. .vim/snippets/php.snippets. Создадим сниппет. Почему бы нам не взять met, который создает наиболее используемую функцию с модификатором PHPpublic. Итак: PHPpublic function... Мне нужна точка для остановки. Можем представить ее в виде ${1} (в фигурных скобках индекс точки).

(2:00)
В данном случае это 1. Мы также можем установить значение по умолчанию, если нужно. Давайте завершим это. Зададим тут другую конечную точку. Теперь сохраню. Нажму Ctrl+6, чтобы перейти в предыдущее расположение. Попробуем. met+Tab... — работает. Если у вас не работает, перезагрузите и должно заработать.

(2:30)
Я могу ввести имя метода, снова нажать Tab и все готово. Почему бы нам не написать еще кое-что? И быстро, — давайте упростим редактирование этого файла. Поскольку, да, легко забыть, где он находится. Вы не должны думать об этом. Прокрутим вниз… Может быть поставить сюда? Хорошо. Это для быстрой правки файла .vimrc. А этот будет редактировать любой файл со сниппетами. Теперь, что я сделаю, — поменяю tabedit на обычную правку. И далее: .vim/snippets.

(3:00)
И позволю пользователю заполнить оставшееся. Теперь, в этом месте, если я введу ,es — все готово. Заполню, нажму Tab — готово. Кстати, вы не видели этого еще, — вот, как выглядит свернутый кусок кода. Я могу нажать za, чтобы открыть. zc — чтобы закрыть. Как я говорил, на самом деле, я не часто пользуюсь этим. Хорошо. Создам другой сниппет и дам вам сделать это самим. Он будет называться pmet и предназначен для функции с модификатором PHPprotected.

(3:30)
Есть еще у меня другой, на самом деле для разных комбинаций. smet для функции с модификатором PHPpublic static. Теперь, какие еще… Добавим пустую строку тут. Я часто использую сниппет, который называется rg. Он предназначен для маршрута: PHPRoute::get('${1}''${2}'). Далее, конечно, я добавляю похожую вещь для patch, put и delete.

(4:00)
Пока сделаем только rp (PHPRoute::post). Возможно, вы захотите добавить вариант: ввести rga и получить версию с анонимной функцией, или замыканием. Типа этого. И теперь добавим тут конечную точку. Давайте продублируем это и напишем rpa. Это будет POST-запрос. Это сохранит вам реально много времени. Потратьте несколько минут, чтобы поиграться с этим, настройте сниппеты.

(4:30)
Если вы обнаружите, что пишете одно и то же снова и снова, перекурите, создайте сниппет, чтобы вам не приходилось делать это опять. Давайте вернемся к файлу routes.php. Мы используем наш удобный маппинг, о котором мы узнали в предыдущем видео: ,lr, для быстрого просмотра routes.php. Тут внизу… хотя, не важно… Давайте удалим все это. Мы можем ввести rg+Tab. Теперь, снова, — если вы делаете это у себя и у вас не работает, как у меня, вам либо нужно перезагрузить MacVim, либо сделать это вручную. Вот так :call ReloadAllSnippets().

(5:00)
Или, опять же, вы можете создать горячие клавиши для этой команды. Как хотите. Итак, мы перезагрузили их. Теперь могу ввести rg+Tab — и это работает. Например, могу вставить вот что: HomeController@home. Или: rga+Tab — и теперь получу эту версию. Очень удобно. И, конечно, rp... и, наконец, rpa. Обещаю, это сэкономит кучу времени.

(5:30)
Позвольте показать, с чем еще вы можете поиграться. Если мы вернемся в файл со сниппетами. Будет полезно сделать так, просто введите snippet $ и это будет означать $this→${1}. Очень полезно. Позвольте, покажу вам это в действии. Перейдем в контроллер. Введем pmet, чтобы создать метод с модификатором PHPprotected. Пишем PHPfoobar(), Tab. И теперь я введу $+Tab. Оп, нужно перезагрузить сниппеты, конечно.

(6:00)
Хорошо, еще раз. $+Tab и, снова, это сэкономит совсем немного времени, но, что-то ещё также сэкономит, и в сумме это порядочно времени. Хорошо, оставляю это для ваших собственных сниппетов. Просто, помните: ,es, чтобы загрузить любой из файлов со сниппетами. Это значит, кстати, если вам нужен специальный сниппет CSS, то нужно сделать что-то вроде этого css.snippets… Теперь, когда тип вашего файла будет CSS, он будет прочитан из этого файла, а не из файла для PHP. Хорошо, помещу это в GitHub. Можете поиграться с этим.

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

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

Разметка: ? ?

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