vim и snipmate / snippets: как создать собственное поведение
Вот мой фрагмент:
# Get repository of a table:
snippet repo
$$2 = $this->getRepository('${1:Bundle}:${2:TableName}')
${3}
Когда я использую это, вот что это может генерировать:
$Person = $this->getRepository('MyBundle:Person')
$Address = $this->getRepository('MyBundle:Address')
Я хотел бы, чтобы первый был строчным, всегда строчным и дал мне что-то вроде:
$person = $this->getRepository('MyBundle:Person')
$address = $this->getRepository('MyBundle:Address')
...
, Есть ли способ сделать это со снайпером?
2 ответа
Это не может быть сделано с snipMate. Я пытался реализовать это, но (особенно когда преобразование изменяет количество символов), это невозможно для текущей реализации.
Это может быть лучшей причиной для перехода на плагин UltiSnips, современный, поддерживаемый вариант (который, однако, требует поддержки Python). Там эта функция называется преобразованием и использует ${<tab stop no/regular expression/replacement/options}
синтаксис. Вы можете использовать \L
атом регулярного выражения в нижнем регистре замены.
Я не думаю, что это возможно с snipmate, но вы можете взглянуть на UltiSnips. UltiSnips использует очень похожий синтаксис шаблона (очень легко конвертировать) и является гораздо более универсальным. http://www.vim.org/scripts/script.php?script_id=2715