Jak poruszać się po wielu dopasowaniach ctag w Vimie?

Używam Ctrl-] w Vim do nawigacji za pomocą Ctags. Jak przejść do pliku alternatywnego, jeśli jest wiele dopasowań?

Ex. something.publish w bazie kodowej zawierającej wiele wystąpień publish:

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end
Author: ib., 2013-01-22

4 answers

:tn[ext] przechodzi do następnego tagu, :tp[revious] przechodzi do poprzedniego. :ts[elect] daje listę do wyboru.

:help tag-matchlist więcej zabawy i ekscytujących rzeczy do wypróbowania!

 63
Author: dash-tom-bang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-22 18:23:43

Użyj g] zamiast C-], Aby uzyskać listę wszystkich dopasowań.

You might want to read :help g]

 98
Author: Dmitry Frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-22 19:25:07

dodanie odpowiedzi, której ostatecznie szukałem na wypadek, gdyby pomogła innym:

g<C-]> przeskoczy do tagu, jeśli jest tylko jeden mecz i wyświetli listę, jeśli jest wiele meczów.

Dodałem to mapowanie do mojego .vimrc, aby zrobić to, co chcę domyślnie:

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

 12
Author: Ross Hambrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-11 15:46:10

ltag

ltag the_tag_name
lopen

Otwiera okno lokalizacji z tagiem dopasowania.

Jest to szczególnie przydatne przy wyszukiwaniu znaczników wyrażeń regularnych:

ltag /tag_na
lopen

Który wyświetli listę wszystkich tagów zawierających łańcuch tag_na (w tym the_tag_name).

Możesz następnie przeszukiwać listę lokalizacji przed naciśnięciem klawisza enter, aby przejść do tagu.

Aby użyć go dla słowa pod kursorem, możesz zdefiniować mapę:

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

Wtedy, jeśli jesteś tab maniak jak ja:

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

Otworzy nową kartę z listą lokalizacji i wszystkimi dopasowaniami, zamiast przeskakiwać bezpośrednio do karty:

:Ltag /my_struct
 0
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 05:20:41