vim的 ctags 和 taglist 在默认情况下是不进行自动更新的,这对于编写代码是非常不方便的,好在vim的脚本还是很强大的,于是在vimrc中添加如下函数:
function! UpdateCtags() let curdir=getcwd() while !filereadable("./tags") cd .. if getcwd() == "/" break endif endwhile if filewritable("./tags") !ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q TlistUpdate endif execute ":cd " . curdir endfunction
接下来,可以使用键盘映射的方式调用这个更新函数:
nmap <F10> :call UpdateCtags()<CR>
也可以在vim保存文件时自动更新:autocmd BufWritePost *.c,*.h,*.cpp call UpdateCtags()
这两种方式用哪种都OK,自动保存可能会发生一些性能上的不爽,键盘映射按多了也烦。
原文地址:
http://www.linuxbar.cn/vim%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0ctags%E4%B8%8Etaglist/