2013-01-22 6 views
39

Ich verwende Ctrl - ] in Vim, um mit Ctags zu navigieren. Wie navigiere ich zu einer alternativen Datei, wenn mehrere Übereinstimmungen vorhanden sind?Wie navigiere ich mehrere Ctags in Vim?

Ex.

class Foo 
    def publish 
    end 
end 

class Bar 
    def publish 
    end 
end 

Antwort

57

:tn[ext] geht zum nächsten Tag, :tp[revious] geht an den vorhergehenden: mehrere Vorkommen publishsomething.publish in einer Code-Basis enthält. :ts[elect] gibt Ihnen eine Liste zur Auswahl.

:help tag-matchlist für mehr Spaß und spannende Dinge zu versuchen!

88

Verwenden Sie g] anstelle von C-], um die Liste aller Übereinstimmungen zu erhalten.

Sie möchten vielleicht :help g]

6

Hinzufügen die Antwort lesen, denn ich war schließlich suchen, falls es hilft anderen:

g<C-]> wird mit dem Tag springen, wenn es nur ein Spiel ist und wird eine Liste präsentieren wenn es mehrere Übereinstimmungen gibt.

Ich habe diese Zuordnung zu meinem .vimrc hinzugefügt, um es zu tun, was ich von Standard wollen:

nnoremap <C-]> g<C-]>

0

ltag

ltag the_tag_name 
lopen 

öffnet sich ein Fenster Standort mit dem Tag Streichhölzer.

Dies ist besonders leistungsstark mit regulären Ausdrücken Tag gesucht:

ltag /tag_na 
lopen 

, die alle Tags aufgelistet, die die Zeichenfolge tag_na (also einschließlich the_tag_name) enthalten.

Sie können dann in der Standortliste weiter suchen, bevor Sie die Eingabetaste drücken, um zum Tag zu springen.

Um es für das Wort unter dem Cursor zu verwenden, können Sie die Karte definieren möchten:

nnoremap <leader>l exec("ltag ".expand("<cword>"))<CR> 

Dann, wenn Sie eine Registerkarte maniac wie ich sind:

command! -nargs=1 Ltag silent ltag <args> | execute "normal \<C-o>" | tab lopen 

wird ein öffnen Neue Registerkarte mit der Standortliste und allen Übereinstimmungen, anstatt direkt zur Registerkarte zu springen:

:Ltag /my_struct