Почему vim -t ctags недостаточно? Я не могу перейти к функции, которую я хочу - PullRequest
0 голосов
/ 17 февраля 2012

ctags -R dirName, теги vim -t очень мощные, поскольку после этих двух команд вы можете теперь иметь возможность перемещаться между кодами этого проекта, например, вы можете просто перейти к коду определенной функции, используя:тег functionName, но эта операция все еще имеет некоторые подводные камни, как это обычно бывает, когда один исходный код может включать некоторые вызовы функций, такие как va_start (), в то время как этот код не включен в каталог dirName, поэтому индексы для этой функции не создаютсяи вы не можете перейти к определению va_start (), но это необходимо для перехода к этой функции?как найти этот код?я даже не знаю, где va_start () определен точно.Как создать индекс ctags для системных функций или функций сторонних производителей?

1 Ответ

4 голосов
/ 17 февраля 2012

Когда вы используете "ctags -R dirName", вы индексируете только символы для содержимого каталога dirName.

Что происходит, так это то, что va_args определен в stdarg.h, который является заголовком стандартной библиотеки C.

Вы будете сталкиваться с той же проблемой каждый раз, когда будете использовать символ из внешней библиотеки.

Поэтому, если вы хотите, чтобы все символы были доступны, у вас есть, помимо вашей программы, также возможность индексировать код для внешних библиотек.

Это значит:

  1. Исходный код должен быть доступен (что не всегда так)

  2. Как только вы нашли в своей системе, где находится файл, он должен быть проанализирован для включения в ваш файл "тега".

Таким образом, после выполнения ctags -R projectPath вы можете выполнить ctags -Ra /usr/include, чтобы добавить все содержимое / usr / include в ваш файл тегов.

В общем случае вы хотите сделать что-то вроде ctags -Ra librarySourcePath, чтобы получить все символы, используемые в вашей программе.

Редактировать: Однако будьте осторожны: / usr / include может содержать много файлов, поэтому размер вашего tag файла может значительно увеличиться, и, как следствие, каждый раз, когда вы будете искать символ для перехода к нему, он может быть намного медленнее !

...