148

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

但是,我不知道下一步该做什么。如何“滚动”浏览所有错误?如何关闭快速修复“窗口”?更改代码后如何让它检查错误?

我查看了 vim quickfix 文档,但是命令的数量是压倒性的,我似乎找不到我想要的。任何帮助,将不胜感激。

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

4

9 回答 9

178

正如您所说,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
:.cc   " Go to error under cursor (if cursor is in quickfix window)

我倾向于将其与:makeand一起使用:vimgrep,因此我无法对 Javascript lint 检查器发表评论,但这应该可以帮助您入门。

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

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

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

于 2009-11-17T08:06:25.527 回答
72

导航快速修复列表(或位置列表,就此而言)最简单的方法unimpaired插件

一旦填充了快速修复窗口,[q然后]q(分别)在快速修复列表中前进和后退。 [Q]Q转到开头和结尾(如果列表中只有一个项目,这特别方便;这使 vim 抱怨[qand ]q)。所以工作流程是:

  1. 运行填充快速修复列表的任何命令
  2. 键入[Q以转到第一项
  3. [q使用和滚动浏览后续项目(如果有)]q

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

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

于 2013-03-14T18:26:46.160 回答
31

将以下两行放入您的 .vimrc 文件中:

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

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

于 2015-03-26T19:19:20.367 回答
25

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

于 2009-11-17T09:30:06.907 回答
14

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

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

于 2019-03-12T09:08:39.987 回答
8

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

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

于 2011-05-05T07:05:58.880 回答
8

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

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

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

于 2014-09-12T11:47:14.523 回答
6

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

实验!

于 2009-11-17T08:07:50.063 回答
0

尽管这需要 > Vim 7.4.858,但 cdo(或用于位置列表的 ldo)命令允许以您曾经只能使用 sed 的方式更新一组不连续的行:

:vimgrep /re/ %:p
:cdo! norm @a
# or
:cdo! s/re/repl/

上面显示了运行录制的宏或简单的搜索和替换。Missing 似乎是一种通过管道和外部命令的方式,你可以使用 :range! command

于 2021-12-20T03:28:58.530 回答