More Useful ViM Tags
March 04, 2009 at 08:35 PM | categories: tips, vim | View CommentsFrequently, I find myself writing C code that requires the use of struct
ifreq. There are plenty of fields there and of course there are other
structures that I never remember. I could always look in the headers, but it
ends up being a good amount of digging before I find the real definition and
all its accompanying pieces. So, I decided to let ctags and ViM do the work
for me. I created ~/bin/update_local_tags with the following contents:
#!/bin/sh [ -d ~/.localtags ] || mkdir ~/.localtags ctags -f ~/.localtags/usrinclude.ctags --exclude=vector\*.hpp -R /usr/include >/dev/null 2>&1
Then I created ~/.vim/ftplugin/c.vim with the following contents:
setlocal tags+=$HOME/.localtags/usrinclude.ctags
For good measure I copied c.vim to cpp.vim so it would be loaded for C++
file types also.
Now I just have to run update_local_tags to generate a tag file for
everything in /usr/include and ViM automatically includes that list whenever
I edit a C or C++ file. Updating the tags file is still a manual process, I
should probably attempt to hook it into apt. Observant readers will have
noticed that I exclude vector*.hpp when generating the tags. Boost includes
a few generated header files that match this pattern and swell the tag file to
almost 750 MiB.
