你如何使用vim的quickfix功能?

时间:2009-11-17 07:04:00

标签: vim jslint

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

但是,我不知道下一步该怎么做..如何“滚动”所有错误?如何关闭quickfix'窗口'?在对代码进行更改后,如何检查错误?

我看过vim quickfix文档,但命令数量太多,我似乎无法找到我想要的东西。任何帮助将不胜感激。

一个附带问题:有没有办法让javascriptlint检查驻留在.html文件中的代码的js错误?

谢谢!

8 个答案:

答案 0 :(得分:126)

正如你所说的那样,quickfix有很多commands,但我倾向于发现我只使用它们的一小部分:

: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文件,那么(没有修补应用程序或要求作者更改它),这可能是一个失败的原因......

答案 1 :(得分:48)

导航quickfix列表(或位置列表)的最简单方法是the unimpaired plugin

填充quickfix窗口后,[q]q会在quickfix列表中前进和后退(分别)。 [Q]Q转到开头和结尾(如果列表中只有一个项目,这会非常方便;这会让vim抱怨[q]q)。所以工作流程是:

  1. 运行任何命令填充quickfix list
  2. 输入[Q转到第一个项目
  3. 使用[q]q
  4. 滚动浏览后续项目(如果有)

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

    unimpaired还有大量其他方便的映射 - [e]e“冒泡”行上下,[<Space>]<Space>插入空白行上面和下面等等。我以前没有人在这里提到它;这可能是因为直到2010年1月它才存在,尽管问题是在2009年提出的。

答案 2 :(得分:18)

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

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

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

答案 3 :(得分:17)

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

答案 4 :(得分:8)

集成JavaScript语法检查的最佳实践方法是使用Syntastic Vim plugin,它使用Vim的 location-list (与 quickfix )窗口。

我已经为this questionthis question撰写了解释如何操作的答案,以及如何使用以下内容获取Vim的源代码浏览/标记列表社区驱动的jshint.com(比JSLint IMO更好)和Mozilla的 DoctorJS (以前是 jsctags )。

答案 5 :(得分:6)

quickfix窗口的运行方式与任何其他vim窗口一样:j向下一行,k向上一行,cn跳转到下一个错误/警告等等。

实验!

答案 6 :(得分:5)

也许这个选项在撰写这个问题时并不存在(或者我可能因为我的.vimrc中的某些事情让我自己感到尴尬)但是当我得到这个问题时Quickfix List,我只需使用jk导航,然后点击<CR>(即输入密钥)即可跳转到文件中的该位置。

然后,为了回到Quickfix List,我为&#34键入Ctrl + W j;向下移动一个窗口&#34;我回来了。

最后,当我完成后,我只需输入:q,就像关闭任何普通窗口一样。

答案 7 :(得分:0)

除了@DrAl关于如何打开和关闭快速窗口以及在条目之间导航的好答案之外,我还制作了一张图像以显示其他一些快速修复导航命令。

下面每组3个文件代表一组快速修复结果,例如来自vimgrep。更新和更冷是为了经历历史结果集。 enter image description here