如何使用vim的quickfix特性?

chhkpiq4  于 2023-01-13  发布在  其他
关注(0)|答案(9)|浏览(193)

我是一个相当新的Vim用户,我发现它的学习曲线相当陡峭(至少对我来说)。我刚刚安装了这个用于JavaScriptLint错误检查的Vim脚本,一旦我保存了缓冲区,它就会在Vim的快速修复窗口中显示错误。
但是,我不知道下一步该怎么做..我如何“滚动”所有的错误?我如何关闭快速修复“窗口”?我如何让它检查错误后,我做了我的代码更改?
我看过vim的quickfix文档,但是命令太多了,我好像找不到我想要的。任何帮助都将不胜感激。
附带问题:有没有办法让javascriptlint检查驻留在.html文件中代码的js错误?

lc8prwob

lc8prwob1#

正如你所说的,有很多用于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)

我倾向于在:make:vimgrep中使用这个工具,所以我不能对Javascript lint检查器进行评论,但这应该可以给予您开始使用它。
关于JavascriptLint的一般用法,我不是一个javascript程序员,但是看起来脚本公开了一个名为“JavascriptLint”的函数,所以如果你想手动调用它,你可以使用:call JavascriptLint()。但是,它在文件的磁盘副本上工作,所以必须先保存它。如果(并且仅当)命令行jsl可以处理html文件时,您应该可以在html文件上使用:call JavascriptLint()来检查内部javascript。

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

如果jsl不支持html文件,那么(除了修补应用程序或要求作者更改它),它可能是一个失败的事业...

5ssjco0h

5ssjco0h2#

浏览快速修复列表(或位置列表)的最简单方法是the unimpaired plugin
填充了quickfix窗口后,[q]q(分别)在quickfix列表中前进和后退。[Q]Q转到开头和结尾(如果列表中只有一个项目,这将特别方便;这使得vim抱怨[q]q).所以工作流是:
1.运行填充快速修复列表的任意命令
1.键入[Q转至第一个项目
1.使用[q]q滚动后续项目(如果有)
如果你使用的是Syntastic,你会得到一个地址列表而不是快速修复列表。只需以相同的方式使用[L]L[l]l即可。
unimpaired也有很多其他方便的Map--[e]e向上和向下“冒泡”行,[<Space>]<Space>在上面和下面插入空行,等等。这可能是因为它直到2010年1月才存在,尽管这个问题在2009年就被提出了。

6rqinv9w

6rqinv9w3#

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

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

现在可以使用ctrl-j和ctrl-k导航错误,这模拟了标准的向下和向上运动命令j和k。

mm9b1k5b

mm9b1k5b4#

您也可以使用:cc 2(或任何其他数字)跳转到快速修复窗口中的第二个错误。使用:cn:cc 4等导航将光标放在有问题的行上。

gopyfrb3

gopyfrb35#

除了@DrAl关于如何打开和关闭快速窗口以及在条目之间导航的精彩回答外,我还制作了一张图片来显示其他一些快速修复导航命令。
以下每组3个文件代表一组快速修复结果,例如来自vimgrep。cnewer和colder用于遍历历史结果集。x1c 0d1x

yhqotfr8

yhqotfr86#

也许这个选项在写这个问题的时候并不存在(或者也许我让自己很尴尬,因为我的.vimrc中有一些东西使这种情况发生),但是当我得到一个Quickfix List时,我只需用jk导航它,然后按<CR>(即Enter键)跳转到文件中的那个位置。
然后,为了回到Quickfix List,我键入Ctrl + Wj表示“向下移动窗口”,然后我回来了。
最后,当我完成时,我只需要键入:q,就像我关闭任何普通窗口一样。

kt06eoxx

kt06eoxx7#

集成JavaScript语法检查的最佳实践方法是使用 Syntastic Vim插件,该插件使用Vim的 location-list(与 quickfix 并行)窗口。
我已经写了这个问题的答案,这个问题解释了如何做,以及如何使用社区驱动的jshint.com(比JSLint IMO好得多)和Mozilla的 * DoctorJS *(以前的 jsctags)为Vim获得源代码浏览/标记列表

vq8itlhq

vq8itlhq8#

Quickfix窗口的操作与任何其它VIM窗口几乎相同:j向下一行,k向上一行,:cn跳转到下一个错误/警告,等等。
实验!

ddhy6vgd

ddhy6vgd9#

尽管这需要〉Vim 7.4.858,但cdo(或ldo用于位置列表)命令允许更新一组不连续的行,这种方式只有在使用sed时才能做到:

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

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

相关问题