ctags:E431,E257,
https://blog.****.net/haichunzhao/article/details/17001271
E431: Format error in tags file - 错误
可能因为生成的标识符太长,vim不支持那么长,限定类型,重新生成即可.
ctags --languages=Asm,c,c++,java -R
http://blog.sina.com.cn/s/blog_85998e3801010x8e.html
利用vim看xen的源代码时,会碰到很多不认识的宏,变量,结构,函数等,vim不能像vs一样可以随便轻易查看定义什么之类。不过借助ctags可以完成类似的功能,很方便的对一些标识符进行查找。当然还有更强大的工具cscope可以完成这一要求。下面简单的介绍下如何用ctags来辅助vim查看xen的源代码。
xen使用asm和c写的,切换到xen的源码根目录下,执行:
$ctags --langmap=c:.c.h --languages=Asm,c -R
过几秒钟后执行完成,会产生一个tags文件,你可以用less查看下tags的内容,格式比较简单,可以参考其他资料。vim打开一个源文件,把鼠标移到调用函数名上,按住‘CTRL’+‘[’就可以跳转到函数的定义处了。或者使用命令完成相同的功能:
:tag 标识符
当有多处匹配标识符时,vim会默认跳转到第一个匹配处。可以使用下列命令进行操作:
- ta[g][!] tagstring 跳转到tagstring定义处,其中!表示在文件更改没保存时进行强制跳转
- tags 查看跳转记录,并用'>'指出当前位置
- [n]ta[g][!] 跳转到相对当前位置的前第n个tag,n默认为1
- [n]po[p][!] 跳转到相对当前位置的后第n个tag,n默认为1
- ts[elect][!] [tagstring] 显示与tagstring的匹配数
- sts[elect][!] [tagstring] 显示与tagstring的匹配数,选中时以子窗口的形式打开
- [n]tn[ext][!] 跳转到相对后n个匹配处
- [n]tp[revious][!] 跳转到相对前n个匹配处
- [n]tr[ewind][!] 跳转到第n个匹配处
- tl[ast][!] 跳转到一个匹配处
注意ctags默认的将.h文件映射成c++文件,如果不加 --langmap=c:.c.h 。将无法对头文件进行查找,也就是说无法用:tag tagstring命令来对定义在头文件里的宏、函数等进行查找。
如果用ctags -R 来产生标识符文件,在c文件里对标识符查找时会出现
E431: Format error in tags file "tags"
Before byte 65
比较了一下产生的tags文件发现标识符那一行都是一样的,只是tags文件会多出很多行。为什么会出现错误,不是很清楚。
今天阅读ext/session.c源码时想通过ctrl+]查到php_session_start函数的定义,报错:“E257: cstag: tag not found”,如下图:
解决方法:
[[email protected]~/wade/codeReview/php-5.3.29/ext/session]# cat ~/.vimrc set tags=tags; set autochdir
注: 第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。
此时便可查到php_session_start函数的定义:
vim使用ctags报“E257: cstag: tag not found”解决方案
原文地址:http://blog.****.net/billfeller/article/details/40316501