Я использую несколько системных SDK и создаю файл тегов для каждого из них, например:
%> ctags -f qt4.tags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ /Library/Frameworks/Qt*
такие созданные файлы тегов помещаются в подпапку, называемую тегами, в моей папке vim. Затем я добавляю некоторые вещи в мой .vimrc:
let &tags="tags;./tags"
let s:tfs=split(globpath(&rtp, "tags/*.tags"),"\n")
for s:tf in s:tfs
let &tags.=",".expand(escape(escape(s:tf, " "), " "))
endfor
и .. вот и все.
я использую exuberant ctags для создания тегов, в Windows я использую предварительно скомпилированные двоичные файлы, в Mac я использую macports и в Linux я использую только пакеты:)