![](/img/trans.png)
[英]How to find Django template tags and replace them with block tags in Vim?
[英]How to find offending format error in Vim tags file
每当我点击Vim中的自动完成宏(例如ctrl-n)时,我最近都会看到这个错误:
E431: Format error in tags file "tags"
标签文件是使用Exuberant Ctags生成的,大约是1MB。 如何找到触发此错误的错误?
我在生成的标签文件中找到了一些额外的行!_TAG_FILE_FORMAT行。当我删除这些额外的行时,vim开始工作。
标签数据库是面向行的; 在标题之后(以!_TAG_FILE_...
开头的行),每行对应一个标记。
通过使用二进制搜索 ,您应该能够快速找到有问题的行:保存标签文件的副本,删除一半,测试。 如果仍然出现错误,请重复(直到您下降到一行)。 否则,拿另一半重复一遍。
这是一般的故障排除技术; 例如,它也有助于在Vim插件中找到问题(通过禁用它们中的一半)。
实际上很长的函数名称可能会导致此错误。 您可以通过在vim中打开标记文件并查找长度超过50个字符的方法名称来找到这些函数。
/^[^\t]{50,}
我认为ctags解析java脚本文件有问题。 从标记中排除它为我修复了这个问题。
ctags -R --exclude=*.js .
除了jaster的回答:
我发现了这一点,它表明1. Keep the text short, because: - The line length that Vi can handle is limited to 512 characters.
个字符打破了vim: 1. Keep the text short, because: - The line length that Vi can handle is limited to 512 characters.
http://ctags.sourceforge.net/FORMAT
编辑:更新源: https Maximum length of a line in a tags file: 512 bytes.
我确实有一个超过512个字符的标记行 - 删除该行为我解决了问题。
我通过重建标签解决了这个问题。
首先删除所有标签文件,然后从项目中重建标签。
我认为原因是我构建了两次标签文件,第一次为子目录构建标签,然后构建父目录。
因此,子目录标记不能包含某些父目录信息。
我遇到了同样的问题,似乎并非所有文件格式都得到很好的支持。 我使用选项-L为c和c ++文件创建标签,问题就消失了。 您可能想尝试以下操作,只需将* .postfix替换为您需要的相应格式。
ctags -L $(find . -name *.c -or -name *.cpp -or -name *.h -or -name *.lua )
删除不符合ctags标准的额外行为我解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.