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,自動保存可能會發生一些性能上的不爽,鍵盤映射按多了也煩。