2010-01-07 94 views

回答

15

我改编了我的设置C++ code completion vim tip

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> 

当需要时,我按下Ctrl-F12重新生成标签。

如果您使用vim-taglist,你可以添加到您的.vimrc一个autocommandBufWritePost事件来更新标记列表窗口每次保存后:

autocmd BufWritePost *.cpp :TlistUpdate 
2

没有测试过,但你可以尝试像:

au BufWritePre  *.cpp ks|!ctags % 

当在.cpp结尾的文件缓冲区被保存(:w)这基本上执行CTAGS。

1

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()