Когда я изменяю файл, например, добавляю функцию, как я могу заставить список тегов автоматически обновлять «список тегов» в его окнах после сохранения изменения?
Я адаптировал свою настройку из подсказки vim C ++. .
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
При необходимости я нажимаю Ctrl-F12 для регенерации тегов.
Если вы используете vim-taglist , вы можете добавить к вашей .vimrc автокоманду для события BufWritePost , чтобы обновить окно списка тегов после каждое сохранение:
.vimrc
autocmd BufWritePost *.cpp :TlistUpdate
Не проверял, но вы можете попробовать что-то вроде:
au BufWritePre *.cpp ks|!ctags %
Который в основном выполняет ctags, когда буфер для файла, оканчивающегося на .cpp, сохраняется (:w).
.cpp
:w
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()
Я написал небольшой экспериментальный скрипт , который автоматически и постепенно обновляет файл "текущих" тегов при сохранении файла.
(Вопрос на самом деле излишний с Vim автоматически генерирует ctags )