Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find all uses of a method in vim

Is there a way to find all uses of a method in vim? I'm using vim as an IDE for Rails with rails.vim. ctags helps to jump to a method definition from usage but not the other way round AFAIK. I'd like to be able to find everywhere (controllers, views etc) that a method has been used.

like image 760
Adnan Avatar asked Mar 17 '13 02:03

Adnan


2 Answers

There aren't any perfect solutions for this in Vim, but you can get close with cscope and grep or ack.

cscope will help you find all references to a symbol. It's made for C and C-like languages, but it does a decent job of matching symbols in Ruby code as well. It's not going to get the context right all the time.

Here's a vim cscope tutorial and a blog post about Ruby/Vim/cscope, and another blog post, both of which include additional tips about navigating Ruby/Rails code in Vim.

Using grep or ack from Vim with quickfix integration is another great way to find symbols. They've got no notion of scope/context, but often a simple search is enough. Using just the built-in :grep command, you can do:

:grep some_method app/controllers
:cwindow

And get the results of the search in the quickfix window, which will allow you to quickly navigate to the matching files and line numbers.

A much better option is the ack.vim plugin, which integrates ack with Vim and makes use of the quickfix window.

If you're not already using a plugin for navigating CTAGS, I recommend Tagbar.

like image 88
Jim Stewart Avatar answered Sep 21 '22 21:09

Jim Stewart


I wrote a gem to do just that: https://rubygems.org/gems/starscope

It parses ruby code properly and exports to ctags and cscope file formats.

like image 41
Evan Avatar answered Sep 21 '22 21:09

Evan