当我对一个文件进行更改时,例如添加一个函数,如何在保存更改后使taglist自动更新其窗口中的“标签列表”?
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
.vimrc
中添加一个 autocommand,用于 BufWritePost 事件,在每次保存后更新 taglist 窗口。autocmd BufWritePost *.cpp :TlistUpdate
au BufWritePre *.cpp ks|!ctags %
当以.cpp
结尾的文件的缓冲区被保存(:w
)时,基本上会执行ctags。
http://vim.wikia.com/wiki/Autocmd_to_update_ctags_file
只需将此添加到您的~/.vimrc文件中。function! DelTagOfFile(file)
let fullpath = a:file
let cwd = getcwd()
let tagfilename = cwd . "/tags"
let f = substitute(fullpath, cwd . "/", "", "")
let f = escape(f, './')
let cmd = 'sed -i "/' . f . '/d" "' . tagfilename . '"'
let resp = system(cmd)
endfunction
function! UpdateTags()
let f = expand("%:p")
let cwd = getcwd()
let tagfilename = cwd . "/tags"
let cmd = 'ctags -a -f ' . tagfilename . ' --c++-kinds=+p --fields=+iaS --extra=+q ' . '"' . f . '"'
call DelTagOfFile(f)
let resp = system(cmd)
endfunction
autocmd BufWritePost *.cpp,*.h,*.c call UpdateTags()