Pull to refresh

VIM как Rails IDE в стиле TexMate благодаря набору скриптов от Akita

Ruby
Это мой первый пост на Хабре, прошу не судить строго :)

В далекие времена, когда я ещё писал на c\c++, я пользовался замечательным редактором VIM, знал минимальный набор vim-фишек, и был в целом доволен его работой. Несколько позже я стал изучать Rails и программировать на Ruby. Я достаточно быстро понял, что базовой поставкой VIM не обойтись, попробовал пару найденных в интернете руководств по доведению VIM до уровня полноценной IDE, наткнулся на подводные камни, и быстро сдался. В тот момент мне хотелось изучать в первую очередь именно Rails, а не VIM.
Немного помытарился с разными другими редакторами и IDE типа Aptana, Geany, Eclipse и т.п. пока не наткнулся на полностью, на тот момент, удовлетворящий меня Netbeans. О Netbeans можно писать, да и написано, немало хорошего. Как IDE для разработки на Ruby Netbeans просто прекрасен. Я и сейчас использую его в случае, если работаю в Windows. Но однажды я оказался на длительное время не за своим, а за чужим ноутбуком, на котором уже стоял VIM, в месте, где интернет-трафик был сильно ограничен. А Таксовик требовал срочной доработки. Выкачивать ~60мб Netbeans и ещё n-ное количество мб на плагины было не этично, я и снова начал освоение VIM. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца 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+>/<+, :on => :<+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, за которые его так любят :)


А вот и скринкаст от автора на эту тему (рекомендую к просмотру):


Перестало работать. Ссылка на другом видеохостинге: blip.tv/file/3765175

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

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

Установка


Linux и Mac:

cd ~
git clone git://github.com/akitaonrails/vimfiles.git .vim
cd .vim
git submodule init
git submodule update


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

cd %HOME%
git clone git://github.com/akitaonrails/vimfiles.git
cd vimfiles
git submodule init
git submodule update


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

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


Послесловие



Собственно, я очень доволен работой этих скриптов и VIM, и теперь на своём основном linux-ноутбуке пересел с Netbeans на VIM. Основные аргументы — удобство в работе (впрочем, оно сравнимо), скорость работы, отсутвие необходимости работать мышью (хотя VIM поддерживает мышь) и скорость загрузки (холодный старт Netbeans — секунд 30).
Не обошлось, конечно, и без небольших подводных камней. Чтобы работала вся эта красота нужен VIM собранный с поддержкой Ruby. Там, где я изначально настраивал это окружение, была установлена Mandriva 2010 и почему-то даже в самом расширенном vim-enhanced такой поддержки не было. Впрочем, многое работало и без неё (но не работал, например, FuzzyFinderTexMate). Проверяется это легко:
vim --version | grep ruby
или, если нет grep, то просто vim --version и поискать +ruby (собран с поддержкой) или -ruby (собран без поддержки).

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

Немного ссылок


Сам блог Akita on Rails
Пост про VIM + RAILS + IDE: часть 1, часть 2
То же, но под Windows

Обновление №2

Как правильно подсказывают в комментариях: статья на хабре о дебаге Ruby-приложений в VIM

Обновление:

P.S. Если вам не трудно, увеличьте, пожалуйста, карму, чтобы я смог перенести это в тематический блог.
Перенёс, спасибо! :)
Tags:vimtexmaterailsvim pluginsразработкаредакторскринкастide
Hubs: Ruby
Total votes 32: ↑25 and ↓7+18
Views22K

Popular right now