Всем здравствуйте.
Не уверен, что выбрал правильный раздел, если чего, поправьте, пожалуйста.
В общем, как уже сказано в заголовке, я не смог найти плагин, индексирующий все файлы в проекте, который бы мне понравился, поэтому написал сам:
indexer.tar.gz
http://www.vim.org/scripts/script.php?script_id=3221
Если вы используете плагин project.tar.gz, то indexer может работать как дополнение к плагину project: он парсит файл проектов (который по умолчанию ~/.vimprojects), и если был открыт файл из какого-либо проекта, то будут сгенерированы теги для всех файлов из этого проекта. Конечно, будут установлены соответствующие значения в tags и path. Теги обновляются при сохранении файла.
По умолчанию теги сохраняются в файл ~/.vimtags/tags
Если плагин project вы не используете и не планируете использовать, то нужно создать файл ~/.indexer_files (конечно, можно выбрать другое расположение) вида:
[CoolProject]
/home/user/myproject/src/*.c
/home/user/myproject/src/*.h
/home/user/myproject/inc/*.h
[AnotherProject]
/home/user/myproject2**/*.c
/home/user/myproject2**/*.h
Еще есть очень важная для меня возможность автоопределения корневой папки проекта. Для этого в корневую папку проекта нужно поместить подпапку ".vim" (название тоже, конечно, можно изменить). При запуске indexer будет подниматься вверх по дереву и искать эту директорию ".vim". Если директория будет найдена, то будут запущены все файлы «*.vim» из нее, установлена переменная $INDEXER_PROJECT_ROOT, и теги будут сохраняться в ".vim/tags/tags".
Лично мне это нужно для того, чтобы я мог переносить проект с одного компа на другой, просто копируя всю папку. Чтобы не было никаких ~/.vimprojects, которые нужно копировать отдельно. У меня этот .vimprojects лежит в директории .vim, и в нем указаны не абсолютные пути, а переменная $INDEXER_PROJECT_ROOT, таким образом, я могу перемещать проект куда захочу, и файлы все равно будут индексироваться корректно.
Пожалуйста, если есть желание, потестируйте, критикуйте. Для определения текущего состояния плагина (какой файл проектов был прочитан, какие файлы проиндексированы, прочее) можно воспользоваться командой :IndexerInfo
Спасибо за внимание.