Как обновить taglist в vim? - PullRequest
9 голосов
/ 07 января 2010

Когда я изменяю файл, например, добавляю функцию, как я могу заставить список тегов автоматически обновлять «список тегов» в его окнах после сохранения изменения?

Ответы [ 4 ]

15 голосов
/ 07 января 2010

Я адаптировал свою настройку из подсказки vim C ++. .

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

При необходимости я нажимаю Ctrl-F12 для регенерации тегов.

Если вы используете vim-taglist , вы можете добавить к вашей .vimrc автокоманду для события BufWritePost , чтобы обновить окно списка тегов после каждое сохранение:

autocmd BufWritePost *.cpp :TlistUpdate
2 голосов
/ 07 января 2010

Не проверял, но вы можете попробовать что-то вроде:

au BufWritePre     *.cpp ks|!ctags %

Который в основном выполняет ctags, когда буфер для файла, оканчивающегося на .cpp, сохраняется (:w).

1 голос
/ 25 июля 2013

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()
1 голос
/ 07 января 2010

Я написал небольшой экспериментальный скрипт , который автоматически и постепенно обновляет файл "текущих" тегов при сохранении файла.

(Вопрос на самом деле излишний с Vim автоматически генерирует ctags )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...