В своей работе мы стремимся к тому, чтобы допускать минимум ошибок и при этом нажимать как можно меньше кнопок. К сожалению, последнее часто затруднительно. Посмотрим, например, на самый простой контроллер в Symfony 2:


namespace App\DefaultBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

/**
* @Route("/path")
*/
class name extends Controller
{
/**
* @Route("/path", name="name")
* @Template()
*/
public function indexAction()
{
return array();
}
}

Код, в общем-то, предельно простой, но чтобы его написать, требуются довольно большие усилия, несоизмеримые с тем, что мы получаем в итоге (да, мы ленивые парни).

Есть варианты. Например, можно копировать нужные нам куски кода из какого-нибудь другого места: соседнего контроллера или с сайта документации. Но, во-первых, это работает лишь для части кода. Во-вторых, для этого нужно открывать другие файлы или сайт. Еще больше действий.

Многие из нас в Evercode Lab используют Sublime Text 2 в качестве основного редактора. У нас даже есть отдельная страница в нашей книге знаний, посвященная Sublime Text 2. И для решения вышеописанной проблемы пользователи Sublime используют сниппеты — небольшие куски кода, пригодные для повторного использования.

Мы сделали набор сниппетов для Ruby on Rails и Symfony2, ну и еще немного для JavaScript и jQuery. И, конечно же, выложили получившийся набор в открытый доступ, чтобы любой желающий мог воспользоваться благами цивилизации!

Использовать сниппеты очень просто. Мы набираем необходимую строчку-алиас, например, sf-controller (что соответствует контроллеру для Symfony2), после чего нажимаем или на tab, или на ctrl-space. И коротенькая строчка текста превращается в необходимый нам кусок кода. Передвижение по placeholder’ам в получившемся коде осуществляется с помощью клавиши tab. Вот, в общем-то, и все, что можно рассказать об использовании данного инструмента.

Полный список используемых сниппетов, можно найти в README.

На данный момент возможен только один вариант установки: с помощью клонирования репозитория в папку с Sublime. Хотя в скором будущем этот набор снипетов мы хотим добавить в Package Controll.

Установка для OS X делается с помощью данной команды:


git clone [email protected]:EvercodeLab/sublime2-snippets.git ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/EvercodeSnippetPack

Для linux:


git clone [email protected]:EvercodeLab/sublime2-snippets.git ~/.config/sublime-text-2/Packages/EvercodeSnippetPack

Полный список используемых сниппетов, можно найти в README к пакету, так что на нём останавливаться мы не будем. Использование сниппетов так же абсолютно простое. Мы набираем необходимую строчку (например sf-controller, что соотвествует контроллеру для Symfony2), после чего нажимаем или на tab или на ctrl-space и коротенькая строчка текста превращается в необходимый нам кусок кода. Передвижение по place holder’ам в получившемся коде осуществляется с помошью клавиши tab.

Чтобы представить более наглядно, покажем, что из себя представляет сниппет. Для примера возьмём всё тот же sf-controller.




sf-controller-with-annotation
source.php
Symfony 2 / Controller class for with annotations

В теге content содержится само “тело” сниппета. ${1:App} это как раз и есть те самые плейсхолдеры. Цифра в них говорит о том, какой порядковый номер они имеют среди остальных плейсхолдеров. Если два имеют одинаковый номер, то они заполняются одинаковой информацией.

Одной из очень интересных особенностей сниппетов в сублиме является возможность использовать регулярные выражения для замены одного текста на другой текст. В нашем примере у нас имеется следующий момент ${TM_FILENAME/(.+)\..+|.*/$1/:name}, он отвечает за имя класса, которое в данном случае берется из имени файла, без расширения.

И еще два последних момента, которые стоит отметить: tabTrigger — показывает, какое сокращение нам необходимо набрать, чтобы мы могЛи использовать сниппет. scope — используЕТСЯ для обозначения, в каких файлах мы можем использовать данный сниппет. Если данный тег будет пустым, то в таком случае сниппет будет применяться во всех файлах.

Более подробную информацию о создании и возможностях сниппетов в Sublime Text 2 можно прочитать в неофициальной документации.

Приятного использования!