2009-11-17 70 views
81

我是一個非常新的Vim用戶,我發現它的學習曲線非常陡峭(至少對我而言)。我剛剛安裝了用於JavaScriptLint錯誤檢查的this vim script,一旦保存了緩衝區,就會在vim的quickfix窗口中顯示錯誤。你如何使用vim的quickfix功能?

但是,我不知道下一步該怎麼做..我如何'滾動'通過所有的錯誤?如何關閉quickfix'窗口'?如何在我對代碼進行更改後檢查錯誤?

我已經看過vim quickfix文檔,但命令的數量是壓倒性的,我似乎無法找到我想要的。任何幫助,將不勝感激。

一個側面的問題:有沒有什麼辦法可以讓javascriptlint檢查存在於.html文件中的代碼的js錯誤?

謝謝!

回答

109

有很多的commands爲的quickfix正如你所說的,但我傾向於認爲我只使用其中的一小部分:

:copen " Open the quickfix window 
:ccl " Close it 
:cw " Open it if there are "errors", close it otherwise (some people prefer this) 
:cn " Go to the next error in the window 
:cnf " Go to the first error in the next file 

我傾向於用:make:vimgrep利用這一點,所以我無法評論Javascript lint檢查器,但是這應該給你一些啓動。

關於JavascriptLint的一般用法,我不是一個javascript程序員,但它看起來像腳本公開了一個名爲「JavascriptLint」的函數,所以如果你想手動調用它,你可以使用:call JavascriptLint()。但是,它在文件的磁盤副本上工作,所以它必須先保存。如果(且僅當)命令行jsl適用於html文件,則應該能夠在html文件上使用:call JavascriptLint()來檢查內部JavaScript。你也可以這樣做:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint() 

使它自動化。如果jsl不支持html文件,那麼(很少修補應用程序或要求作者改變它),這可能是一個失敗的原因...

+0

謝謝,這些命令是一個好的開始,我只需要玩一下,並習慣它的工作原理。 如果我使用:cn轉到qf窗口中的錯誤,我可以用我的代碼跳到窗口而不退出qf窗口嗎?它可以跳到有錯誤的行嗎? 而你的建議使用:呼叫作品,但它遵循

5

quickfix窗口操作大多像其他任何vim窗口:j下線,k上線,:cn跳轉到下一個錯誤/警告等。

實驗!

+1

+1進行實驗,這幾乎是我學會了一切。 – hora 2009-11-17 09:10:47

14

您也可以使用:cc 2(或任何其他數字)跳轉到,在這種情況下,在quickfix窗口中的第二個錯誤。使用:cn:cc 4等進行導航時,會將光標置於相關線路上。

8

整合JavaScript語法檢查使用Syntastic Vim plugin,這是使用Vim的位置列表(平行於的quickfix)窗口的最佳實踐方式。

我寫的答案爲this questionthis question解釋如何做到這一點,再加上還怎麼用得源代碼瀏覽/標籤列表 Vim的社區驅動的jshint.com(這是國際海事組織比JSLint的方式更好)和Mozilla的DoctorJS(以前的jsctags)。

39

導航quickfix列表(或位置列表)最簡單的方法是the unimpaired plugin

一旦填入quickfix窗口,[q]q前後移動(分別)在quickfix列表中。 [Q]Q轉到開始和結束(如果列表中只有一個項目,這會特別方便;這使得vim抱怨[q]q)。因此,工作流程是:

  1. 運行任何命令[q]q

填充quickfix列表

  • 類型[Q通過後續的項目去的第一個項目
  • 滾動(如果有的話)如果你使用Syntastic,你會得到位置列表,而不是quickfix列表。沒問題;以相同的方式使用[L,]L,[l]l

    unimpaired具有其他方便的映射的負荷太大 - [e]e「泡沫」上面和下面行上下,[<Space>]<Space>插入空行,等等。我很驚訝沒有人在此之前提到;這可能是因爲它直到2010年1月才存在,儘管在2009年問了這個問題。

  • 4

    也許這個選項在編寫這個問題時不存在(或者我可能會因爲我的.vimrc中有某些東西而感到尷尬但是當我得到一個Quickfix List時,我只是用jk導航它,然後點擊<CR>(即Enter鍵)跳轉到文件中的那個位置。

    然後,回到Quickfix List我輸入Ctrl + Wj爲「下移窗口」,我回來了。

    最後,當我完成時,我只需鍵入:q,就像我將關閉任何常規窗口一樣。

    +0

    這就是我想要做的,但是我得到「無法進行更改」,「可更改」「關閉」。 – 2016-10-05 20:23:34

    12

    把下面兩行.vimrc文件:

    map <C-j> :cn<CR> 
    map <C-k> :cp<CR> 
    

    現在你可以使用CTRL-J和CTRL-K,它模仿標準的向下和向上運動指令J和K在錯誤導航。