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

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

    В далекие времена, когда я ещё писал на 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. Если вам не трудно, увеличьте, пожалуйста, карму, чтобы я смог перенести это в тематический блог.
    Перенёс, спасибо! :)
    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 36

      +3
      там Акита забавно раз в две-три минуты че-нить косячит и говорит «уупс» :)))

      а по делу:
      несмотря на всё уважение к akita, рекомендую:
      вместо git://github.com/akitaonrails/vimfiles.git рекомендую git://github.com/scrooloose/vimfiles.git
      ибо
      а) он в оригинале автор и мейнтейнер идеи
      б) сборка новее, чем у akita
      в) больше новых сниппетов
      г) у акиты наблюдаются некоторые неприятные глючки

      также ни там ни там у меня не заработали обещанные va[tab] и прочие, содержащие в коде <+...+> — вместо красивой подстановки переменных выкидывает исходник сниппета.
      на тему сего запостил issue в scrooloose/snipmate-snippets.
        0
        Да, я видел scrooloose, но мне понравился скринкаст Акиты, и я использовал его набор горячих клавиш, который не совпадает с набором scrooloose.

        А насчёт va[tab], так так и должно быть. Появляется исходник, курсор кидает на первую <+...+>, начинаешь что-то вбивать, после [tab] и на вторую и т.д.

        За наводку насчёт авторства — спасибо. А у вас есть ссылка на какой-нибудь пост с описанием радостей\прелестей этого набора от scrooloose?
          +1
          вот именно что нажатия на [tab] и [Ctrl+J] в сочетании va[tab] нифига не работают :((
          может, у меня вим какой-то не такой? о_О

          набор у scrooloose тот же самый. различия в мелких деталях и свежести компонентов набора.
          например, Ctrl+F (FuzzyFinder) у меня в наборе от scrooloose заработало сразу, а от акиты — требовало допиливания
          Ctrl+T (NERDTree) не работало ни там ни там, заработало после добавления
          map <C-t> :NERDTree<CR>
          в .vimrc
            0
            рекомендую, кстати,
            map <C-t> :NERDTreeToggle
              0
              спасибо! :)
                0
                Тогда уж
                :map <C-t> :NERDTreeToggle
                  0
                  silent убился:)
        0
        Кстати, а как перенести топик в блог Ruby или VIM?
        И, кстати, если переносить — то куда?
          +1
          В ruby. Пересадим больше программистов на этот замечательный редактор. Может, и ценой недели времени, потерянного на его изучение, но оно того стоит
            0
            В Ruby и перенёс :)
          0
          Спасибо за превосходную цветовую схему
          • НЛО прилетело и опубликовало эту надпись здесь
              +1
              Дело привычки. Мнение большинства vim'оводов: «поначалу непривычно, зато потом, когда немного наберёшь навыков работы в VIM, все остальные редакторы, если приходится в них работать, тебе как будто руки вяжут.»
              0
              Спасибо за пост. Есть замечание — тут все хорошо, не хватает только отладчика.

              Тут была статья про использования VIM для отладки.

              Однако, у меня не получилось заставить работать vim как отладчик в windows. В результате, приходится держать под рукой netbeans.

              Если у кого есть положительный опыт использования VIM для отладки rails приложений — пожалуйста, дайте знать.
                +2
                У меня есть, я им каждый день пользуюсь, но меня-то не спрашивают наверно, да? :)
                А если не получилось заработать, почему не написали в GitHub Issues или на крайний случай мне на почту? Почти всем, кто писал и у кого были какие-либо проблемы, получилось помочь.

                Хотя надо признать, в Windows vim-ruby-debugger использовать не очень удобно. Вот на маке или в линуксе очень даже.
                  0
                  Антон, спасибо за ответ, и за vim-ruby-debugger.

                  Не написал никуда, т.к. не хотелось обременять вас всякой ерундой, тем более что не был на 100% уверен, что проблема именно в vim-ruby-debugger. Хотелось узнать сначала, работает ли у кого под windows, и если да, то тогда можно продолжать попытки заставить работать и у себя. Такая была идея. :)
                    0
                    Да, vim-ruby-debugger работает под Windows. Из неудобств — плагин держит два окошка с терминалом открытыми и постоянно мельтешит ещё одним при выполнении различных действий, потому как я не нашел способа запускать в Windows программы в бэкграунде (как в линуксе с &, например 'ruby bla.rb &' запустит на POSIX системе процесс в бэкграунде).

                    Если мне кто подскажет хороший метод, как можно этого добиться, буду очень признателен.
                      +1
                      попробуйте вот это www.ntwind.com/software/utilities/hstart.html
                      конечно придется включить данную программулину в дистрибутив или написать свою :)
                        0
                        Ух ты, мило! Супер! Спасибо большое, судя по описанию это именно то, что надо!
                    0
                    о, а можно заодно вопрос. а с macvim его реально заставить работать? в свое время не особо парился, но с наскока не получилось и проблема вроде какая-то фундаментальная была.
                      0
                      Ага, было такое, нашли багу. Надо указать в .vimrc

                      :let g:ruby_debugger_progname = 'mvim'

                      Подробности смотрите в :help ruby-debugger-issues.

                      И как обычно — если что-то не работает — добро пожаловать в Github Issues! :)
                        0
                        спасибо. вы клевый гитхаб-юзер )
                          0
                          Спасибо за комплимент. :)
                          Гитхаб — это просто фантастика! Проекты стало в разы легче создавать, поддерживать и обновлять. А ещё так приятно наблюдать как растёт количество Watchers, как сетка форков в Network разрастается… Ни в какие что-нибудьforge уже и не хочется. А когда они добавили Issues, отпала необходимость и в багтрекере, Issues вполне хватает для моих проектов.

                          Короче сплошной восторг. Вот поэтому я там и живу. :)
                            0
                            да кто бы спорил, сам там :) без сотен вотчеров, но это закономерно )
                  0
                  Мне FuzzyFinder успешно заменили RTcontroller, RTmodel, RTview, RTlayout, RTmigration, RTenvironment и прочие.
                    0
                    Далее, вы открываете ваш ~/.vim/vimrc (на Windows %HOME%\_vimrc), и вставляете туда следующие строки:


                    Опечатка у вас, исправьте ~/.vim/vimrc на ~/.vimrc
                      0
                      Исправил. Вы, конечно, правы
                      +1
                      Как пропатчить vim-ruby под ruby 1.9?
                        0
                        Хороший вопрос. 7.2 не собирается с ruby.h от 1.9.1, а так хочется +ruby
                          +1
                          Для arch linux: aur.archlinux.org/packages.php?ID=31727
                          Для всех остальных: по ссылке выше есть патч, для сборки vim с ruby 1.9

                          Там же в комментариях пишут, что:
                          «Yes gvim 7.2.441 from testing repository works with Ruby 1.9
                          Do not use this package.»
                            0
                            Спасибо, добрый человек:) На будущих выходных попробую собрать.
                        0
                        хорошо, но перестал работать tab-completion, как его вернуть к жизни?
                        0
                        Спасибо за пост, добавил в избранное.
                        Как освоюсь с Rails и Ruby обязательно обращу свой взор на vim.
                          0
                          Я искренне извиняюсь за тупость вопроса, но курение мануалов как-то не помогает. Я хочу запустить под виндой вим, чтобы писать на руби. Собственно скачал и установил вим отсюда: www.vim.org/download.php#pc
                          ставил тот, что для 64 битной версии ОС.
                          Прочитал вашу статью, вим собран без поддержки руби (-ruby пишется когда вывожу инфу о версии).
                          Собственно вопрос — как сделать теперь так, чтобы было +ruby?

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое