Снипетты в VIM

vim-128.png

Сниппет (англ. snippet — фрагмент, отрывок) — программный термин, обозначающий небольшой фрагмент исходного кода или текста, пригодного для повторного использования. (wikipedia)

В vim'e существует поддержка сокращений (iabbrev), для простой замены вполне сгодится, но если надо что-то по изощреннее то существуют два достойных кандидата snipMate и xptemplate(XT).

Из коробки

Пример поддерживаемых сокращений в виме

iabbrev bt  
iabbrev ddate =strftime("%d.%m.%Y")

snipMate

snipMate позиционирует себя как реализатор сниппетов из TextMate, но лично мне он не подошел:

  • во-первых дополнение по tab'у у меня проглуючивало, т.к. на этой клавише у меня висит функция, которая заменяет пачку других дополнений при редактировании (дополнение путей, уже набранного текста и т. д.). Признаться честно я не захотел играться над тем что бы подружить функцию и snipMate, см. дальше про XT;
  • во-вторых нету всплывающего окна, рядом с курсором, с выбором вариантов, а появляется небольшой регион в нижней части окна (над строкой состояния) со списком выбора, то есть для выбора первого элемента введите 1, для второго - 2, и т.д., имхо это дико, проще и удобней всплывающее окно как у XT возле курсора;
  • набор возможностей по дописыванию своих сниппетов у snipMate будет попроще чем у XT. Например в snipMate нельзя в шаблоне def func_name(arg1) после arg1 нажать tab и получить еще один параметр Также в snipMate более бедный набор готовых сниппетов для python и почти нет для css.

Но snipMate более популярен в vim среде и для него существует больше готовых сниппетов, но это не особо большой аргумент в пользу него, т.к. затратив немного времени и изучив синтаксис XT можно писать более гибкие удобные сниппеты.

xptemplate

А теперь гвоздь программы - xptemplate для меня во всех параметрах лучше чем snipMate. Все что я указал выше как недостатки snipMate, в xptemplate есть и замечательно работает.

Я написал пачку сниппетов для django и django templates — vim_xp_django.tar.gz. Распаковать в папку ~/.vim/. В архив попали наиболее часто используемые поля моделей, теги и блоки для шаблонов. Со временем архивчик будет обновляться, а на первое время этого должно хватить. Также буду рад видеть ваши дополнения ;).

Подборка ссылок по snipMate

Подборка ссылок по xptemplate

blog comments powered by Disqus