2014-12-05 103 views
7

我最近看到了這個錯誤得罪格式錯誤,每當我打自動完成宏在Vim中(例如,CTRL-N):如何找到Vim的標籤文件

E431: Format error in tags file "tags"

的標籤文件與旺盛的產生Ctags,大約1MB。我如何找到引發此錯誤的錯誤?

+3

就我而言,就在'E431'錯誤消息的下面,還有另一條消息指出標籤文件中發生錯誤的位置,例如, '在字節63964633'之前。所以解決這個問題是用Vim打開標籤文件並輸入':go 63964633'來轉到發生錯誤的字節。這恰好是一條1404字節長的行。刪除這條線解決了這個問題。 – 2016-03-08 15:21:06

回答

4

真正長的函數名稱可能會導致此錯誤。您可以通過在vim中打開標籤文件並查找超過50個字符的方法名稱來查找這些功能。

/^[^\t]{50,} 
+0

謝謝。仍然想知道是否有辦法處理它們。另外,我猜你的50值是任意的。都很奇怪。 – mahemoff 2015-06-12 11:00:57

3

標籤數據庫是面向行的;在標題(以!_TAG_FILE_...開始的行)之後,每行對應於標籤。

通過使用二進制搜索,您應該可以快速找到有問題的行:保存標籤文件的副本,刪除一半,測試。如果仍然出現錯誤,請重複(直到您下降到一行)。否則,請拿出另一半並重復。

這是一般的故障排除技術;例如,在Vim插件中查找問題(通過禁用其中的一半)也很有幫助。

+0

我發現它。對於其他人閱讀,標籤每次都讀取,因此只需在保存文件後執行ctrl-p或ctrl-n即可。我結束了去標籤文件的頂部,刪除了一半的文件,並嘗試在Vim。我發現這個錯誤是由於在開發過程中生成了Rails資產文件,如果我目測檢查了標記文件,我會發現它是一個非常長期的文字(255個以上的字符)。 – mahemoff 2014-12-05 14:30:08

+0

標籤 - 皮棉工具仍然不錯,但似乎沒有。 – mahemoff 2014-12-05 14:30:35

9

我在生成的標籤文件中發現了一些額外的行!_TAG_FILE_FORMAT行。當我刪除這些額外的行時,vim開始工作。

+2

這確實有點奇怪,現在問題是這些線是如何在那裏結束的。如果我們每次創建新的標籤文件時都必須刪除這些內容,那麼這並不是什麼工作流程。你有幸找到原因嗎? – Thomas 2015-05-21 15:29:34

-1

刪除不符合ctags標準的多餘行解決了我的問題。

+2

是不是循環邏輯,即導致有效的相同的問題,我怎麼知道哪些行是非確認? – mahemoff 2015-07-02 11:07:00

0

我通過重建標籤解決了這個問題。

首先刪除所有標籤文件,然後重建項目中的標籤。

我認爲原因是我建立標籤文件兩次,第一次爲子目錄建立標籤,然後建立父目錄。

因此,子目錄標記不能包含一些父目錄信息。

1

我認爲ctags在解析java腳本文件時存在問題。從標記中排除它爲我解決了這個問題。

ctags -R --exclude=*.js .