例如,当我对文件进行更改时,添加一个函数,在保存更改后,如何使标记列表自动更新其窗口中的“标记列表”?如何刷新vim中的taglist?
9
A
回答
15
我改编了我的设置C++ code completion vim tip。
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
当需要时,我按下Ctrl-F12重新生成标签。
如果您使用vim-taglist,你可以添加到您的.vimrc
一个autocommand为BufWritePost事件来更新标记列表窗口每次保存后:
autocmd BufWritePost *.cpp :TlistUpdate
2
没有测试过,但你可以尝试像:
au BufWritePre *.cpp ks|!ctags %
当在.cpp
结尾的文件缓冲区被保存(:w
)这基本上执行CTAGS。
1
我写了一个little experimental script,它自动递增地更新文件保存时的“当前”标签文件。
(现在的问题是Vim auto-generate 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()
相关问题
- 1. Vim Taglist导航
- 2. 如何在Emacs中使用Vim-like-Taglist?
- 3. 在Vim的taglist中支持Cython?
- 4. 如何在vim的Taglist窗口中显示变量
- 5. 如何在窗口的右侧打开Vim的Taglist插件?
- 6. 在Vim中更改Ctags Taglist上的位置
- 7. 在vim和python virtualenv中使用taglist的ctags
- 8. 在OSX中使用带taglist和ctags的vim
- 9. 如何跳转到taglist中的方法
- 10. 如何在Vim中使用FuzzyFinder刷新文件列表?
- 11. vim刷新保存的NWrite密码?
- 12. 有没有人有与Scala一起工作的vim taglist插件?
- 13. 如何刷新可用文件CommandT在vim
- 14. 为什么ideavim与vim for taglist不一样?
- 15. GNU Global/gtags是否支持taglist vim插件?
- 16. 如何刷新刷新布局android
- 17. 我如何刷新刷新令牌
- 18. 如何在php中刷新页面刷新我的sql表?
- 19. Drag'n'drop taglist elements
- 20. 刷新缓冲区中的所有文件在vim
- 21. Vim项目插件\ R不刷新创建的新目录
- 22. 如何在刷新时刷新进度对话框在Android中刷新?
- 23. 如何判断Vim:在浏览器中打开当前文档并刷新?
- 24. 如何刷新RecyclerView,并刷新刷新布局时使用新的Json refreshLayout
- 25. 如何刷新gridview?
- 26. 如何刷新FilteredItemsSelectionDialog
- 27. 如何刷新viewForFooterInSection
- 28. 如何“刷新”UIView
- 29. 如何刷新ArrayList?
- 30. 如何刷新CocoaAsyncSocket?