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
or just download the archive from here:
http://github.com/astashov/vim-ruby-debugger/tarball/master
-
Copy contents of 'vim' folder to your
/.vim/ (or to/.vim/plugin/ruby_debugger.vim**, ~/.vim/bin/ruby_debugger.rb and ~/.vim/doc/ruby_debugger.txt First file is a debugger plugin loader, second is a debugger itself, third is a small ruby script, that makes interaction between the VIM and the ruby-debug-ide gem. Fourth is a documentation file./.vim/bundle/vim-ruby-debugger if you use pathogen). You should have 4 files there then: **/.vim/autoload/ruby_debugger.vim**, ** -
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 <Leader>v - open/close window with variables. You can expand/collapse variables by 'o' in normal mode or left-mouse double-click <Leader>n - step over <Leader>s - step into <Leader>c - continue
If you want to run tests, replace in /autoload directory ruby_debugger.vim to ruby_debugger.vim from additionals/autoload 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.