你如何使用vim的quickfixfunction?

我是一个非常新的Vim用户,我发现它的学习曲线非常陡峭(至less对我而言)。 我刚刚安装了这个vim脚本来进行JavaScriptLint错误检查,一旦我保存了缓冲区,就会在vim的quickfix窗口中显示错误。

但是,我不知道下一步该怎么做..我如何滚动所有的错误? 如何closuresquickfix'窗口'? 如何在更改我的代码后检查错误?

我看过vim quickfix文档,但是命令的数量是压倒性的,我似乎无法find我想要的。 任何帮助,将不胜感激。

一个侧面的问题:有没有什么办法来检查js错误的JavaScriptlint驻留在.html文件中的代码?

谢谢!

如你所说,有很多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文件上工作,您应该能够使用:call JavascriptLint()在html文件上:call JavascriptLint()来检查内部javascript。 你也可以这样做:

 autocmd BufWritePost,FileWritePost *.html call JavascriptLint() 

自动化。 如果jsl不支持HTML文件,那么(很less修补应用程序或要求作者改变它),这可能是一个失败的原因…

导航quickfix列表(或者位置列表)最简单的方法就是unimpaired插件 。

一旦quickfix窗口被填充, [q]q在quickfix列表中分别前后移动。 [Q]Q开始和结束(如果列表中只有一个项目,这尤其方便;这使vim抱怨[q]q )。 所以工作stream程是:

  1. 运行任何命令填充quickfix列表
  2. input[Q去第一个项目
  3. 使用[q]q滚动后续项目(如果有的话)

如果您正在使用Syntastic,您将获得位置列表,而不是quickfix列表。 没问题; 用同样的方式使用[L]L[l]l

unimpaired也有其他方便的映射负载 – [e]e “泡”线上下, [<Space>]<Space>上面和下面插入空行,等等。 这可能是因为直到2010年1月,这个问题才出现。

您也可以使用:cc 2 (或任何其他数字)跳转到,在这种情况下,quickfix窗口中的第二个错误。 使用:cn:cc 4等进行导航会将光标放在相关的行上。

将下面的两行放在.vimrc文件中:

 map <Cj> :cn<CR> map <Ck> :cp<CR> 

现在,您可以使用ctrl-j和ctrl-k浏览错误,模拟标准的向下和向上运动命令j和k。

集成JavaScript语法检查的最佳实践方法是使用Syntastic Vim插件 ,该插件使用Vim的位置列表 (与quickfix平行)。

我已经为这个问题写了答案, 这个问题解释了如何做,以及如何使用社区驱动的jshint.com (这比JSLint IMO更好的方式)获得Vim的源代码浏览/标签列表和Mozilla的DoctorJS (以前的jsctags )。

quickfix窗口的操作与其他任何vim窗口大致相同:j下行,k上行,:cn跳转到下一个错误/警告等。

实验!

也许这个选项在编写这个问题的时候不存在(或者我自己感到尴尬,因为我的.vimrc中有一些东西会导致这种情况发生),但是当我得到一个Quickfix List ,我用jk导航它,然后点击<CR> (即Enter键)跳转到文件中的那个位置。

然后,回到Quickfix List我inputCtrl + W j作为“向下移动窗口”,然后我回来了。

最后,当我完成后,我只需键入:q ,就像我将closures任何正常的窗口。