2010-01-07 13 views
9

Cuando hago un cambio en un archivo, por ejemplo, agrego una función, ¿cómo puedo hacer que el taglist actualice automáticamente la "lista de etiquetas" en sus ventanas después de guardar el cambio?Cómo actualizar el taglist en vim?

Respuesta

15

He adaptado mi configuración desde C++ code completion vim tip.

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

Cuando sea necesario, presiono Ctrl-F12 para regenerar las etiquetas.

Si está utilizando vim-taglist, se podría añadir a su .vimrc un autocommand para el evento BufWritePost para actualizar la ventana después de cada taglist ahorrar:

autocmd BufWritePost *.cpp :TlistUpdate 
2

no hemos probado, pero se puede intentar algo así como :

au BufWritePre  *.cpp ks|!ctags % 

lo que básicamente ejecuta ctags cuando la memoria intermedia para un archivo que termina en .cpp se salva (:w).

1

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

sólo Agregar a su ~/.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() 
Cuestiones relacionadas