2013-03-17 8 views
6

Gibt es eine Möglichkeit, alle Verwendungen einer Methode in vim zu finden? Ich benutze vim als eine IDE für Rails mit rails.vim. Ctags hilft, zu einer Methodendefinition von der Verwendung zu springen, aber nicht umgekehrt AFAIK. Ich möchte überall (Controller, Ansichten usw.) finden können, dass eine Methode verwendet wurde.Hier finden Sie alle Verwendungen einer Methode in vim

Antwort

7

Es gibt keine perfekte Lösung dafür in Vim, aber Sie können mit cscope und grep oder ack nah kommen.

cscope wird Ihnen helfen, alle Verweise auf ein Symbol zu finden. Es ist für C- und C-ähnliche Sprachen gedacht, aber es macht auch einen anständigen Job, Symbole in Ruby-Code abzustimmen. Es wird den Kontext nicht immer richtig machen.

Hier sind ein vim cscope tutorial und ein blog post about Ruby/Vim/cscope, und another blog post, die beide zusätzliche Tipps zum Navigieren von Ruby/Rails-Code in Vim enthalten.

Die Verwendung von grep oder ack von Vim mit Quickfix-Integration ist eine weitere gute Möglichkeit, Symbole zu finden. Sie haben keine Ahnung von Umfang/Kontext, aber oft genügt eine einfache Suche. Mit dem nur :grep Befehl eingebaut, können Sie tun:

:grep some_method app/controllers 
:cwindow 

Und die Ergebnisse der Suche in dem quickfix Fenster erhalten, mit dem Sie schnell erlaubt, mit den entsprechenden Dateien und Zeilennummern zu navigieren.

Eine viel bessere Option ist das ack.vim Plugin, das ack mit Vim integriert und das Quickfix-Fenster nutzt.

Wenn Sie nicht bereits ein Plugin zum Navigieren von CTAGS verwenden, empfehle ich Tagbar.

+0

Ausgezeichnet. Ich werde das definitiv ausprobieren. grep ist natürlich eine alte Standby-Version, aber ich habe sie stand-alone (in einem anderen Terminal-Fenster) benutzt. Integriert in meinen Hauptredakteur wäre auch ohne viel Kontext viel besser. – Adnan

+0

Ich arbeite an meiner eigenen Konfiguration für den Umgang mit cscope in meinen Rails-Projekten. Hier ist ein [gist] (https://gist.github.com/fweep/5182260) mit etwas davon. Beachten Sie, dass es nur ein Teil meiner Konfiguration ist und eng mit meinem Git-Setup verbunden ist, aber ich denke, es könnte Ihnen helfen, loszulegen, wenn Sie mit cscope einsteigen möchten; Dort gibt es genügend Informationen, um eine 'cscope.out' Datenbank zu erstellen und sie in Vim zu laden/durchsuchen. Wahrscheinlich möchten Sie einige der Pfadnamen ändern. Wenn ich es zu einem Plugin mache und/oder einen Blogpost darüber schreibe, werde ich hier kommentieren. –

+0

Danke für den Link .. – Adnan

5

schrieb ich ein Juwel, genau das zu tun: https://rubygems.org/gems/starscope

Es Ruby-Code richtig und Exporte in ctags und cscope Dateiformate analysiert.

+0

Ich werde es auf jeden Fall überprüfen! – Adnan

+0

Err .. Können Sie bitte eine Notiz über die Ruby-Versionsanforderung zu Ihrer GitHub-Seite hinzufügen. Anscheinend explodiert das Sternskop auf 1.9.2 (braucht 1.9.3): \ – Adnan

+0

Sicher, ich werde das in Kürze tun. Ich wusste nicht einmal, dass es mit älteren Versionen nicht funktionieren würde. – Evan

Verwandte Themen