Wie springe ich zur korrekten Methodendefinition, wenn mehrere Tags übereinstimmen?

1742
Felix

Ich habe versucht, die Tag-Datei zu generieren:

ctags -R * −−java−kinds=+mc 

Wenn es mehr als eine Übereinstimmung gibt, springt Strg +] immer zur falschen Methodendefinition in einer anderen Klasse.

Ich weiß, dass ich mit: tjump auswählen kann, ob es mehr als eine Option gibt. Aber ich hoffe, dass es eine bessere Lösung gibt (falls vorhanden)?

2
Werfen Sie einen Blick auf `: help tag-priority` Flimm vor 10 Jahren 0

2 Antworten auf die Frage

7
Ingo Karkat

In solchen Fällen würde ich empfehlen, g CTRL-]statt zu verwenden CTRL-]. So :tjumpwerden beispielsweise alle verfügbaren Tag-Übereinstimmungen aufgelistet und Sie abgefragt, anstatt zum ersten zu springen.

Um dies als Standard festzulegen, können Sie diese Zuordnung verwenden:

:nnoremap <C-]> g<C-]> 
Hallo, haben Sie einen Hinweis auf [dieses Problem] (https://superuser.com/questions/1269284/vim-does-not-jump-to-correct-line-of-tag-chosen-in-tselect-match -Liste)? georgexsh vor 6 Jahren 0
Ich denke also, es gibt keine Möglichkeit für 'ctags' zu erfahren. Wir müssen sie daher auflisten und die Auswahl treffen. daixtr vor 5 Jahren 0
0
romainl

Weder ctags noch vim haben die Fähigkeit zu erraten, was das richtige Tag ist, und es gibt keine Möglichkeit, das neben :tjumpoder zu umgehen :tselect. :taghat einen Prioritätsmechanismus, über den Sie in der Dokumentation nachlesen können, aber das ist immer noch ziemlich dumm.

Cscope ist etwas schlauer, aber nicht so viel.

In dieser Situation ist die Auflistung möglicher Ziele die einzig vernünftige und praktische Vorgehensweise.