2011-03-11 76 views
5

是否有Vim腳本定期嘗試編譯/解釋我正在處理的代碼,並突出顯示語法錯誤?我想指出這些行之間有什麼不對勁:Vim語法/編譯時錯誤突出顯示

int a = 42 
cout << a << endl; 

這樣的事情可以節省我很多時間。我主要在尋找一個Perl語法檢查器,但我也對其他語言的類似插件感興趣。

更新:另一個錯誤我想它指出:

int a == 42; 
cout << a << endl; 
+0

你可能想要到''make'做你想要的地方,並將一個鍵映射到它,這樣,而不是「定期」,你有「每當我推」或其他。預覽窗口中的錯誤與高亮顯示不完全相同,但是它是內置功能。 (對於Perl,您只需要將'makeprg'設置爲'perl -c'。) – Cascabel 2011-03-11 16:21:08

+0

我使用了ActiveState的Komodo一段時間。在編輯時出現了指出語法錯誤的巨大印象。事情並非如此巨大的生產力提升。調試器很整潔(特別是在很遠的地方,通過服務器上的CGI腳本)。 – bobbogo 2011-03-11 19:32:11

+0

我會砍死一個解決方案通過自己:)你可以參考[獲取與errormarker AsyncCommand工作] [1] [1]:http://stackoverflow.com/q/7963021/108565 – yoco 2011-11-02 06:18:15

回答

6

您可以使用eclim:一旦您的eclim服務器設置好並且正在運行,您可以使用Vim命令:Validate對您的文件運行代碼驗證。

基本上,它使用eclipse中的可用驗證並將其顯示在位置列表中的Vim/gVIm中。 (使用:lopen

對於您來說,位置列表包含:

test.cpp|1 col 11 error| Syntax error 
test.cpp|2 col 1 error| Syntax error 

(山坳11對應於缺少;的位置)

默認情況下,驗證正在運行的每節省您的時間一個緩衝區。

錯誤描述並不十分清晰,但一旦找到錯誤行,您通常很容易發現錯誤。

1

自動縮進應該這樣做。當您使用額外的縮進級別開始新行時,可能意味着您要麼進入了新塊,要麼沒有完成語句。

+0

那會解決我的例子,但是有一些編譯器發現的錯誤,例如我剛剛通過回答更新了一個。 – Tim 2011-03-11 07:45:03