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,自动保存可能会发生一些性能上的不爽,键盘映射按多了也烦。