你如何使用vim的quickfix功能?

问题描述 投票:101回答:8

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

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

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

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

谢谢!

vim jslint
8个回答
129
投票

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


53
投票

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

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

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

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

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


19
投票

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


19
投票

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

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

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


8
投票

集成JavaScript语法检查的最佳实践方法是使用Syntastic Vim plugin,它使用Vim的位置列表(与quickfix并行)窗口。

我已经为this questionthis question解释了如何做到这一点,以及如何使用社区驱动的jshint.com(比JSLint IMO更好的方式)和Mozilla的DoctorJS(以前的方式)获取Vim的源代码浏览/标记列表的答案jsctags)。


6
投票

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

实验!


5
投票

也许这个选项在写这个问题时不存在(或者我自己很尴尬,因为我的.vimrc中有一些东西可以实现这一点)但是当我得到一个Quickfix List时,我只需用jk导航它然后点击<CR>(即Enter键)跳转到文件中的那个位置。

然后,为了回到Quickfix List,我输入Ctrl + W j“向下移动一个窗口”然后我回来了。

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


1
投票

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

下面的每组3个文件代表一组quickfix结果,例如来自vimgrep。 cnewer和colder用于历史结果集。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.