改变Vim';s Syntastic是否使用基于文件扩展名的特定检查器?

改变Vim';s Syntastic是否使用基于文件扩展名的特定检查器?,vim,jshint,eslint,syntastic,Vim,Jshint,Eslint,Syntastic,我已经正确安装了vim的syntastic以及eslint和jshint。对于大多数javascript编程,我更喜欢jshint。然而,我开始学习React,并希望将eslint与syntastic结合使用(eslint对React具有高级/适当的linting) 是否可以将vim设置为对*.js文件使用jshint,对*.jsx文件使用eslint 我从中了解到:帮助将作出反应的语法检查器集中到javascript中。我也不想把门楣拴起来 找到了!您与@lcd047非常接近,但您的评论让我走

我已经正确安装了vim的syntastic以及eslint和jshint。对于大多数javascript编程,我更喜欢jshint。然而,我开始学习React,并希望将eslint与syntastic结合使用(eslint对React具有高级/适当的linting)

是否可以将vim设置为对*.js文件使用jshint,对*.jsx文件使用eslint


我从中了解到:帮助将作出反应的语法检查器集中到javascript中。我也不想把门楣拴起来

找到了!您与@lcd047非常接近,但您的评论让我走上了正确的道路!要仅对*jsx文件启用
eslint
,请将以下内容放入my
.vimrc
中:

au BufEnter*.jsx let b:syntastic_checkers=['eslint']


在我的例子中,默认情况下,syntastic将在javascript上使用
jshint
,即使在
.vimrc
中没有设置检查器。即使
g:syntastic\u javascript\u checkers
未设置,或者在我的情况下,即使将其设置为jshint,上述设置仍然有效。

您可以尝试
autocmd BufRead,BufNewFile*.jsx let b:syntastic\u checkers=['eslint']
。这可能适用于打开时的syntastic检查,也可能不适用于打开时的syntastic检查,具体取决于Vim选择运行autocmd的顺序(顺序未明确定义)。如果它仍然在open上运行
jshint
,您可以为
*.js
添加一个类似的
autocmd
,并取消设置
g:syntastic\u javascript\u checkers
。感谢您给我一个答案@lcd047!
BufEnter
上的
autocmd
绝对不能与打开的
syntastic\u check\u一起工作。尽管如此,请不要理我。@lcd047,也许我当时发现了一个bug?我仍然得到与上述相同的行为:javascript文件上的jshint,以及*.jsx文件上的eslint。我的vimrc中还有
g:syntastic\u check\u on\u open=1
。我通过npm在全球范围内安装了两个Checker。作为syntastic的主要贡献者,我非常感谢您的帮助。原谅我,如果我看起来有点像一个教师(这是我的教师培训和我自己的缺乏经验/兴奋的表现)。错误在于你对应该发生什么的理解<代码>打开时检查
BufRead
上运行,并且在
BufEnter
之前应用
BufRead
<代码>b:首次在活动模式下运行
check\u on\u open
时,syntastic\u checker将被取消设置。