你如何使用vim的quickfix功能?

hor*_*ora 109 vim jslint

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

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

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

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

谢谢!

DrA*_*rAl 131

正如你所说的那样,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
:cp    " Go to the previous error in the window
:cnf   " Go to the first error in the next file
Run Code Online (Sandbox Code Playgroud)

我倾向于使用:make:vimgrep,所以我不能评论Javascript lint检查器,但这应该给你一些入门.

关于JavascriptLint的一般用法,我不是javascript程序员,但看起来脚本公开了一个名为"JavascriptLint"的函数,所以如果你想手动调用它,你可以使用:call JavascriptLint().但是,它适用于文件的磁盘副本,因此必须先保存.如果(且仅当)命令行jsl适用于html文件,您应该能够:call JavascriptLint()在html文件上使用来检查内部javascript.你也可以这样做:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()
Run Code Online (Sandbox Code Playgroud)

自动化它.如果jsl不支持html文件,那么(没有修补应用程序或要求作者更改它),这可能是一个失败的原因......


Chi*_*ogg 56

导航quickfix列表(或位置列表,对于这个问题)最简单的方法是unimpaired插件.

一旦填充了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年提出的.


Ami*_*ich 20

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

map <C-j> :cn<CR>
map <C-k> :cp<CR>
Run Code Online (Sandbox Code Playgroud)

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


And*_*art 19

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


run*_*ace 13

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

下面每组 3 个文件代表一组 quickfix 结果,例如来自 vimgrep。cnewer 和colder 用于查看历史结果集。 在此处输入图片说明

  • 非常方便直观的参考,我也许会把它保留为桌面壁纸 (2认同)
  • @Moberg、VimNing 和其他任何将来发现这一点的人。您可能正在寻找 :chi[story] (2认同)

Ory*_*and 8

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

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


Lon*_*Rob 7

也许,当这个问题被写这个选项是不存在的(或者也许我尴尬,因为我自己有什么东西在我.vimrc这使这种情况发生),但是当我得到一个Quickfix List,我只是浏览它jk然后打<CR>(即回车键)跳转到文件中的那个地方.

然后,回到Quickfix ListI类型Ctrl+ W j"向下移动一个窗口"然后我回来了.

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

  • 您可能已经覆盖了 Enter 键。例如,我有`nmap &lt;CR&gt; o&lt;Esc&gt;`,所以我可以在正常模式下添加换行符。 (3认同)

jus*_*ody 6

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

实验!

  • +1 用于实验,这几乎就是我学到的一切。 (2认同)