Навигация по тегам в vim

С Vim, интегрированным в cscope, я могу вернуться назад, используя ctrl-T, и увидеть текущую позицию стека тегов, используя :tags . Но как мне двигаться вперед в стеке? Единственное, что я смог найти на справочных страницах, это перейти к определению функции (например, ctrl-])


person vpillai    schedule 22.07.2013    source источник
comment
@Kent Я не использую ctags как отстой. Я использую ктэги. Итак: ta не работает   -  person vpillai    schedule 22.07.2013


Ответы (3)


Стек тегов создается всеми вашими переходами к определению. Каждый раз, когда вы делаете <C-]>, тег, к которому вы переходите, добавляется в стек тегов, и вы можете использовать <C-t> или :pop, чтобы вернуться к предыдущему тегу в стеке тегов, или :tag, чтобы пойти другим путем. И :tag, и :pop принимают необязательный счетчик, поэтому :5pop будет идти к пятому предыдущему тегу.

См. :help tagstack.

person romainl    schedule 22.07.2013

Вы также можете использовать Ctrl+I и Ctrl+O для перемещения вперед и назад соответственно по списку переходов. Это работает с командами тегов, поскольку они считаются движениями прыжка.

So to:

  • Перейти к тегу: Ctrl+].
  • Перейти назад: Ctrl+O.
  • Снова перейти к тегу: Ctrl+I.
person Chetan Potdar    schedule 22.07.2013
comment
Это работает в списке переходов (и в списке тегов как побочный эффект). Но это не совсем таговая навигация. - person vpillai; 22.07.2013

Просто добавляю этот ответ, потому что у меня нет представителя, чтобы редактировать или комментировать принятый ответ, но <C-t> фактически соответствует команде :pop, а не команде :tag, как было указано.

:pop предназначена для перемещения «назад» в стеке тегов (приведет к сообщению «в нижней части стека тегов») и является командой с привязкой клавиш по умолчанию <C-t>

:tag предназначен для перемещения "вперед" в стеке тегов (приведет к сообщению "на вершине стека тегов").

Я не знаю о какой-либо привязке клавиш для :tag, например, для перемещения назад, поэтому я сопоставил (не ) с тегом.

nnoremap <C-[> :tag<CR>

person Joel Strouts    schedule 27.08.2017
comment
Я отредактировал принятый ответ. Удивлен, что его так долго не было! - person sjw; 10.12.2020