例如,當我對文件進行更改時,添加一個函數,在保存更改後,如何使標記列表自動更新其窗口中的「標記列表」?如何刷新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?