2010-01-07 26 views

Odpowiedz

15

Dostosowałem ustawienia z poziomu C++ code completion vim tip.

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

W razie potrzeby naciskam Ctrl-F12, aby zregenerować tagi.

Jeśli używasz vim-taglist, można dodać do .vimrc o autocommand dla zdarzenia BufWritePost zaktualizować okno taglist po każdym zapisać:

autocmd BufWritePost *.cpp :TlistUpdate 
2

nie testowałem, ale można spróbować czegoś podobnego :

au BufWritePre  *.cpp ks|!ctags % 

który zasadniczo wykonuje ctags gdy bufor dla pliku kończącego się w .cpp zostaje zapisany (:w).

1

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

Wystarczy dodać do Twojego ~/.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()