февраля 05, 2009

Snippets

Иногда бывает очень полезной автоматическая вставка некоторого частовстречающегося кода, так называемых Snippet'ов. К примеру, это могут быть языковые конструкции (if ... then, while ... do, begin ... end. Такая фитча есть в Delphi IDE).

Для настройки ее в виме, потребуется скачать плагин Snippets_plugin. Устанавливается он очень просто - нужно открыть его в виме и набрать :UseVimball.

Теперь можно перейти к использованию. Нужна, скажем, конструкция if ... then ...;. Набираем:
:Snippet if if <{Cond}> then <{Body}>;

Если в режиме вставки набить if<TAB>, то сработает этот сниппет. Далее курсор будет установлен на Cond, необходимо набить конкретный Cond и нажать TAB. Курсор будет перевден на {Body} (а в общем случае - на первую необработаную шнягу вида <{что-то}>).

Вот, собственно, и вся теория. Теперь по мелочам.

Вместо if можно набирать любую последовательность символов без пробелов. Т.е., скажем, такой сниппет :Snippet i,. if (i < 0)Or(i >= Width) then Exit; будет корректен.

Одна из самых полезных фич в плагине - это теги. Допустим, что в предыдущем примере мы хотим иметь возможность вставлять вместо i другие переменные. Тогда:

:Snippet i,. if (<{Name}> < 0)Or(<{Name}> >= Width) then Exit;

Теперь, если вы наберете первое Name, второе будет заполнено автоматически.

Более хитрый способ использования сниппетов - значение, введенное ранее подставлять не сразу, а использовать для вычисления того, что нужно подставить. Записывается это как <{Name:Expression}>, где Name - имя тега, а Expression - выражение, которое будет подставлено. Значение, введенное пользователем в Name ранее заносится в регистр @z.

Для вставки Enter'ов используется <CR>.

Для создания сниппетов специально для паскаля лучше создать pascal_snippets.vim в папке Vim\vimfiles\ftplugin (сразу после установки vim'а она обычно пустая), в котором и прописать все необходимые сниппеты.

Таб может показаться неудобным, тогда можно добавить в _vimrc что-то вроде

let g:snippetsEmu_key = "<S-Tab>"

И, конечно же, не забудьте про :help Snippet.

ПС.
Ценный совет. Не ставьте в качестве названия сниппета просто i или j.


Комментариев нет:

Отправить комментарий

Постоянные читатели

Обо мне

Моя фотография
Мой e-mail: vitek_03(at)mail(dot)ru