http://blog.csdn.net/myth_liu/article/details/5672572
http://chaojimake.com/724.html
熟练的使用ctags仅需记住下面几条命:
1.ctags --languages=Asm,c,c++,java -R (生成tags,汇编、c、c++、java)
2.$ vi –t tag (请把tag替换为您欲查找的变量或函数名)
3.:ts (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)
4.:tp (tp 助记字:tags preview)
5.:tn (tn 助记字:tags next)
6.Ctrl + ] (跳转到定义处)
7.Ctrl + T (退回至跳转前)
8.:ta x (跳转到符号x的定义处,如果有多个符号,直接跳转到第一处
9.:ts x (列出符号x的定义)
10.:tj x (可以看做上面两个命令的合并,如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择)
注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:set tag=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件(帚把不到,灰尘不会自己跑掉)。
(转自:https://blog.csdn.net/sunlylorn/article/details/8920457)
vim的ctags和taglist在默认情况下是不进行自动更新的,这对于编写代码是非常不方便的,好在vim的脚本还是很强大的,于是在vimrc中添加如下函数:
function! UpdateCtags()
let curdir=getcwd()
while !filereadable("./tags")
cd ..
if getcwd() == "/"
break
endif
endwhile
if filewritable("./tags")
!ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++,java --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q
TlistUpdate
endif
execute ":cd " . curdir
endfunction
nmap <F10> :call UpdateCtags()<CR>
按F10可以更新。