2010-01-07 91 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()