我是一个非常新的Vim用户,我发现它的学习曲线非常陡峭(至少对我而言)。我刚刚为JavaScriptLint错误检查安装了this vim script,一旦我保存了缓冲区,就会在vim的quickfix窗口中显示错误。
但是,我不知道下一步该怎么做..如何“滚动”所有错误?如何关闭quickfix'窗口'?在对代码进行更改后,如何检查错误?
我看过vim quickfix文档,但命令数量太多,我似乎无法找到我想要的东西。任何帮助将不胜感激。
一个附带问题:有没有办法让javascriptlint检查驻留在.html文件中的代码的js错误?
谢谢!
答案 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
)。所以工作流程是:
[Q
转到第一个项目[q
和]q
如果您正在使用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 question和this question撰写了解释如何操作的答案,以及如何使用以下内容获取Vim的源代码浏览/标记列表社区驱动的jshint.com(比JSLint IMO更好)和Mozilla的 DoctorJS (以前是 jsctags )。
答案 5 :(得分:6)
quickfix窗口的运行方式与任何其他vim窗口一样:j向下一行,k向上一行,cn跳转到下一个错误/警告等等。
实验!
答案 6 :(得分:5)
也许这个选项在撰写这个问题时并不存在(或者我可能因为我的.vimrc
中的某些事情让我自己感到尴尬)但是当我得到这个问题时Quickfix List
,我只需使用j
和k
导航,然后点击<CR>
(即输入密钥)即可跳转到文件中的该位置。
然后,为了回到Quickfix List
,我为&#34键入Ctrl
+ W
j
;向下移动一个窗口&#34;我回来了。
最后,当我完成后,我只需输入:q
,就像关闭任何普通窗口一样。
答案 7 :(得分:0)