С Vim, интегрированным в cscope, я могу вернуться назад, используя ctrl-T, и увидеть текущую позицию стека тегов, используя :tags . Но как мне двигаться вперед в стеке? Единственное, что я смог найти на справочных страницах, это перейти к определению функции (например, ctrl-])
Навигация по тегам в vim
Ответы (3)
Стек тегов создается всеми вашими переходами к определению. Каждый раз, когда вы делаете <C-]>
, тег, к которому вы переходите, добавляется в стек тегов, и вы можете использовать <C-t>
или :pop
, чтобы вернуться к предыдущему тегу в стеке тегов, или :tag
, чтобы пойти другим путем. И :tag
, и :pop
принимают необязательный счетчик, поэтому :5pop
будет идти к пятому предыдущему тегу.
См. :help tagstack
.
Вы также можете использовать Ctrl+I и Ctrl+O для перемещения вперед и назад соответственно по списку переходов. Это работает с командами тегов, поскольку они считаются движениями прыжка.
So to:
- Перейти к тегу: Ctrl+].
- Перейти назад: Ctrl+O.
- Снова перейти к тегу: Ctrl+I.
Просто добавляю этот ответ, потому что у меня нет представителя, чтобы редактировать или комментировать принятый ответ, но <C-t>
фактически соответствует команде :pop
, а не команде :tag
, как было указано.
:pop
предназначена для перемещения «назад» в стеке тегов (приведет к сообщению «в нижней части стека тегов») и является командой с привязкой клавиш по умолчанию <C-t>
:tag
предназначен для перемещения "вперед" в стеке тегов (приведет к сообщению "на вершине стека тегов").
Я не знаю о какой-либо привязке клавиш для :tag, например, для перемещения назад, поэтому я сопоставил (не ) с тегом.
nnoremap <C-[> :tag<CR>