This Vim plugin implements interactive Ruby debugger in Vim.
- It can debug any Ruby application (Rails, by default), using ruby-debug-ide gem
- The debugger looks like in the Netbeans - you can go through the code, watch variables, breakpoints in separate window, set and remove breakpoints.
- It supports command-line rdebug commands. E.g., you can execute ':RdbCommand p User.all' in command line of VIM and it will display result like usual echo VIM command.
-
Vim >= 7.0, compiled with +signs and +clientserver. You can verify it by VIM command:
:echo has("signs") && has("clientserver") && v:version > 700
It should show result '1'.
-
ruby-debug-ide gem.
-
For linux: 'lsof' program.
-
Clone the repo
git clone git://github.com/astashov/vim-ruby-debugger.git
-
Copy contents of 'vim' folder to your
/.vim/. You should have 3 files there then: **/.vim/plugin/ruby_debugger.vim**, ~/.vim/bin/ruby_debugger.rb and ~/.vim/doc/ruby_debugger.txt First file is a debugger plugin and second is a small ruby script, that makes interaction between the VIM and the ruby-debug-ide gem. Third is documentation file. -
Generate local tags file
:helptags ~/.vim/doc
Now, you can use
:help ruby-debugger
to get help for the ruby-debugger plugin.
I've tested the plugin in Windows and Linux. All tests should be passed there.
-
Run Vim. If you use gvim, it will automatically start the server, but if you use vim, you need to set servername explicitly, e.g., vim --servername VIM
-
Go to the directory with some your Rails application.
:cd ~/projects/rails
-
Run Server with Debugger:
:Rdebugger
It will kill any listeners of ports 39767 and 39768 and run rdebug-ide and ~/.vim/bin/ruby_debugger.rb on these ports accordingly.
-
Set breakpoint somewhere by <Leader>b (e.g., '\b'). You should see 'xx' symbol at current line.
-
Open page with the breakpoint in the browser. Vim should automatically set current line to breakpoint.
-
After this, you can use commands:
<Leader>b - set breakpoint at current line
m - open/close the breakpoints window. You can delete a breakpoint by pressing 'd' on the desired breakpoint. v - open/close window with variables. You can expand/collapse variables by 'o' in normal mode or left-mouse double-click w - open/close the watches window. You can delete a watch by pressing 'd' on the desired watch. n - step over s - step into f - step out c - continue
If you want to run tests, replace in /plugin directory ruby_debugger.vim to ruby_debugger_test.vim (take it from additionals/plugin directory). And then, in command mode execute
:call g:TU.run()
Special thanks to tpope (for rails.vim) and Marty Grenfell (for NERDTree), mostly, I learn Vim Scripting from their projects.