How to refresh taglist in vim?

前端 未结 4 729
攒了一身酷
攒了一身酷 2021-02-14 13:27

When I make a change to a file, for example, add a function, how can I make the taglist automatically update the \"tag list\" in its windows after I save the change?

4条回答
  •  醉话见心
    2021-02-14 14:01

    http://vim.wikia.com/wiki/Autocmd_to_update_ctags_file

    Just add this to your ~/.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()
    

提交回复
热议问题