VIM как Rails IDE

Очень долго я разрабатываю приложение для веба. Сначала я работал на DreamWeaver, но его функционал был ужасен да еще за него нужно было платить. Немного помытарился я перешол на Netbeans. Прекрасное IDE, но есть один недостаток – кушать такие IDE память и процессор любят (логично – больше плагинов – больше проблем). Потом я перешол на Aptana. Великолепное IDE. Писать про него можно много. Хоть он тоже любит память и процессор (Eclipse все-таки), но не такой прожорливый как Netbeans. Я работаю на этом IDE по сей день, но в один прекрасный момент мне достался ноутбук с 1.5 одно ядерным процессором и 1 Гб памяти. Работать то можно, но для Aptana такой процессор не сильно нравится – уж часто её приходится «уходить в себя» (зависать на неопределенный интервал времени). И хоть работать возможно, я решил поработать в Vim. Сам по себе vim «голый» очень скуд в функционале. И поскольку мы разрабатываем львиную долю проектов на Rails и Ruby, мне нужно было улучшить работу. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца Akita on Rails. Он, как я понял, собрал кучу полезных плагинов вместе и чуть-чуть дописал конфиг. Всё, о чём будет говориться ниже верно не только для Ruby, но и для других языков типа C, PHP и прочее, готовые наборы сниппетов (о них далее) в комплекте есть и для них.

Основные фишки этого набора скриптов

  1. FuzzyFinderTexMate — очень удобный поиск файлов в проекте по ctrl+f. К примеру, чтобы найти файл config\routes.rb надо набрать rorb. Или даже и того меньше :)
  2. Набор сниппетов из TexMate и некоторое количество своих (в смысле, NERDSnippets). Очень удобно, набираешь vf + TAB — получаешь validates_format_of :<+attribute+>, :with => /<+regex+>/<+, :o n => :<+create+>, :message => «<+is invalid+>»+>, где по TAB скачешь между параметрами, заключёнными в <+…+>. Сниппеты есть для всего, чего угодно, их полный список можно посмотреть в папке snippets в директории с файлами кофигурации VIM.
  3. Дерево проекта, реализованное с помощью NERDTree. Доступно по \+p (обратный слеш и символ p). Переключение с дерева проекта в окно редактирования кода и обратно осуществляется по ctrl+w и стрелка (куда будет стрелка, туда курсор и перескочет), в самом же дереве o — открыть\закрыть папку\файл, R (shift+r) — обновить дерево и по вопросу(?) довольно внятная справка по горячим клавишам.
  4. Подсветка кода (rb, html, rjs, js, erb и т.п.)
  5. Возможности из rails.vim типа перехода по gf на файл модели, если курсор стоит на вызове, например, конструктора. Всяческие :Rake, :Rgenerate и т.п.
  6. Ну и все возможности и навороты VIM, за которые его так любят :)

Надеюсь, вы уже потираете руки, потому что vim — это очень быстрый, удобный, расширяемый и очень не требовательный к ресурсам компьютера редактор.

Добиться всего этого очень просто. Вышеупомянутый Akita собрал всё это в одном проекте на github.

Установка

Linux и Mac:

  1. cd ~
  2. git clone git://github.com/akitaonrails/vimfiles.git .vim
  3. cd .vim
  4. git submodule init
  5. git submodule update

Если же у вас Windows, то в первую очередь надо установить Exuberant CTags и msysGit, после чего проделать следующее:

  1. cd %HOME%
  2. git clone git://github.com/akitaonrails/vimfiles.git
  3. cd vimfiles
  4. git submodule init
  5. git submodule update

Далее, вы открываете ваш ~/.vimrc (на Windows %HOME%\_vimrc), и вставляете туда следующие строки:

  1. source ~/.vim/vimrc "Собственно, подцепить все настройки от Akita
  2. "В Windows вместо строчки выше надо вбить %HOME%\vimfiles\vimrc
  3. colorscheme vibrantink "Приятная цветовая схема в стиле TexMate
  4. set nu "Отображать номер астрок
  5. set sw=2 "Заменяет TAB на 2 пробела
  6. set sts=2 "Аналогично, но в случае автоотступа
  7. let g:fuzzy_ignore = "gems/*"

Послесловие

Собственно, я очень доволен работой этих скриптов и VIM, и теперь на своём основном linux-ноутбуке пересел с Netbeans на VIM. Основные аргументы — удобство в работе (впрочем, оно сравнимо), скорость работы, отсутвие необходимости работать мышью (хотя VIM поддерживает мышь) и скорость загрузки (холодный старт Netbeans — секунд 30).
Не обошлось, конечно, и без небольших подводных камней. Чтобы работала вся эта красота нужен VIM собранный с поддержкой Ruby. Проверяется это легко:

  1. vim –version | grep ruby

или, если нет grep, то просто vim –version и поискать +ruby (собран с поддержкой) или -ruby (собран без поддержки).

На всякий случай скажу, что в TexMate я никогда не работал :)

P.S. Еще отмечу очень удобный плагин для перехода между буферами (можно конечно использовать стандартные команды VIM, такие как ls, bn, bp, но можно и более удобным способом). Плагин Bufexplorer позволяет просмотреть список открытых буферов(файлов), отсортировать их, перейти к нужному и т.п.

P.S. P.S. пара скриншотов:

09. апреля 2010 by Alexey Vasiliev
Categories: Ruby, Ruby on Rails, vim, Новости | Tags: , , | 4 комментария

Comments (4)

  1. не гони на дримвивер!
    ты просто не умеешь его готовить ;) )))

    • Ок. Как он работает с системами контроля версий и как там создать больше одного фтп на проект? А то я же не умею :) Еще могу перечислить

  2. http://help.adobe.com/ru_RU/Dreamweaver/10.0_Using/WS80FE60AC-15F8-45a2-842E-52D29F540FED.html

    а больше одного фтп кажись низзя… ток зачем это? О_о типа деплоить сразу в несколько мест? я такого извращения нигде не встречал )) может в аптане твоей есть, а так, сколько редакторов перепробовал — нигде такого не видел

    • SVN ок, а как насчет GIT и Mercurial?
      >>а больше одного фтп кажись низзя… ток зачем это? О_о типа деплоить сразу в несколько мест? я такого извращения нигде не встречал ))

      Ура великому разработчику. Как минимум есть staging и production. Уже два.