До недавнего времени я писал Ruby код в Netbeans. Штука клевая и очень удобная, но я давно заглядывался на Vim, уж больно он мощный текстовый редактор, бобам и не снилось. Пытался несколько раз на него перейти, но как только встречался какой-то затык в коде, закрывал Vim, открывал Netbeans, ставил брейкпоинт и начинал разбираться что не так. В общем, привык я к отладчику.
Помучившись некоторое время, пришла идея написать Ruby дебаггер под Vim. Открыл код rails.vim, NERDTree.vim и начал учиться VimScript'у. Так что спасибо tpope и Marty Grenfell за уроки (хотя наверно они никогда этого не прочтут и не узнают об этом). Плагин можно сейчас лицезреть на гитхабе.
1. Дебажить любые Ruby скрипты, используя ruby-debug-ide гем.
2. Ставить/удалять брейкпоинты, смотреть переменные, путешествовать по коду.
3. Вводить команды вручную. Например, :RdbCommand p Post.all выведет все записи модели Post.
Для корректной работы плагину надо:
По умолчанию (их конечно же можно переопределить в вашем .vimrc) задейстованы такие сокращения:
Как переопределить их вы можете почитать в :help ruby-debugger-details
То я буду дико признателен за репорт в гитхабовском Issues. Можете также просто написать на anton /сбк/ astashov.net, но репорт в Issues будет лучше. :) Плагин ведет лог почти обо всех своих действиях в файл ~/.vim/tmp/ruby_debugger_log, так что вместе с багом желательно приложить содержимое этого файла.
Я проверял работоспособность в Linux'е и Windows. В Linux'e плагин работает лучше, в Windows я так и не понял как запускать процессы в бэкграунде, поэтому мельтешащие окна с сервером и промежуточным ruby скриптом отвлекают. В MacOs не проверял, потому как у меня её нет.
Ну и напоследок скриншот плагина:

Помучившись некоторое время, пришла идея написать Ruby дебаггер под Vim. Открыл код rails.vim, NERDTree.vim и начал учиться VimScript'у. Так что спасибо tpope и Marty Grenfell за уроки (хотя наверно они никогда этого не прочтут и не узнают об этом). Плагин можно сейчас лицезреть на гитхабе.
Что умеет плагин
1. Дебажить любые Ruby скрипты, используя ruby-debug-ide гем.
2. Ставить/удалять брейкпоинты, смотреть переменные, путешествовать по коду.
3. Вводить команды вручную. Например, :RdbCommand p Post.all выведет все записи модели Post.
Что потребуется
Для корректной работы плагину надо:
- Vim версии >= 7.0, скомпиленный с опциями +signs и +clientserver. Проверить это можно так:
:echo has("signs") && has("clientserver") && v:version >= 700
Результат должен быть = 1 - Установленный гем ruby-debug-ide
- Если вы под Linux'ом, нужен установленный lsof
Установка
- Клонируем репо:
git clone git://github.com/astashov/vim-ruby-debugger.git
- Из полученного нам нужна только папка vim, остальное нужно только для разработки. Копируем содержимое vim в ~/.vim/ (или в vimfiles, если вы под Windows).
В итоге, должно получиться 3 файла:
- plugin/ruby_debugger.vim — собственно сам плагин
- doc/ruby_debugger — документация
- bin/ruby_debugger.rb — промежуточный Ruby скрипт между Vim'ом и ruby-debug-ide гемом. Всё общение между ними происходит через него.
- Далее, запускаем Vim и выполяем
:helptags ~/.vim/doc
для установки документации по плагину. Почитать её можно по команде
:help ruby-debugger
Использование
- Запускаем Vim. Если вы используете gvim, он автоматически запустит Vim сервер, а если vim — надо запускать с опцией servername: vim --servername VIM
- Идем, например, в какой-нибудь рельсовый проект.
- Запускаем сервер c отладчиком командой
:Rdebugger
(по умолчанию он запускает script/server webrick, если надо отладить другой скрипт, можно запустить:
:Rdebugger foo.rb
- Ставим где-нибудь брейкпоинт (по умолчанию командой <Leader>b, чаще всего это \b).
- Открываем страницу с брейкпоинтом в браузере. Vim должен автоматически прыгнуть к линии со сработавшим брейкпоинтом.
- Дальше смотрим переменные, путешествуем по коду, в общем — развлекаемся! :)
Команды
По умолчанию (их конечно же можно переопределить в вашем .vimrc) задейстованы такие сокращения:
- <Leader>b — поставить брейкпоинт
- <Leader>v — открыть/закрыть окно с переменными. Переменные можно открывать/закрывать либо командой 'o' в нормальном режими или левым дабл-кликом
- <Leader>m — открыть/закрыть окно с брейкпоинтами. Можно прыгнуть на выбранный брейкпоинт команодй 'o' в нормальном режими или левым дабл-кликом, а также удалить брейкпоинт командой 'd' в нормальном режиме
- <Leader>n — перешагнуть (step over)
- <Leader>s — войти (step into)
- <Leader>c — продолжить (continue)
Как переопределить их вы можете почитать в :help ruby-debugger-details
Если вы встретили баг или придумали новую клевую фичу
То я буду дико признателен за репорт в гитхабовском Issues. Можете также просто написать на anton /сбк/ astashov.net, но репорт в Issues будет лучше. :) Плагин ведет лог почти обо всех своих действиях в файл ~/.vim/tmp/ruby_debugger_log, так что вместе с багом желательно приложить содержимое этого файла.
Я проверял работоспособность в Linux'е и Windows. В Linux'e плагин работает лучше, в Windows я так и не понял как запускать процессы в бэкграунде, поэтому мельтешащие окна с сервером и промежуточным ruby скриптом отвлекают. В MacOs не проверял, потому как у меня её нет.
Ну и напоследок скриншот плагина:
