【问题标题】:Change Vim's Syntastic to use a certain checker based on file extension?更改 Vim 的 Syntastic 以使用基于文件扩展名的特定检查器?
【发布时间】:2017-11-23 18:02:51
【问题描述】:

我已经正确安装了 vim 的 syntastic 以及 eslint 和 jshint。对于我的大部分 javascript 编程,我更喜欢 jshint。但是,我开始学习 React,并希望将 eslint 与 syntastic 一起使用(eslint 具有出色/适当的 linting 用于反应)。

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

我从 :help syntastic-checkers 中看到 react 被集中在 javascript 中。链接 linter 也不是我想要的。

【问题讨论】:

  • 你可以试试autocmd BufRead,BufNewFile *.jsx let b:syntastic_checkers = ['eslint']。这可能适用于syntastic_check_on_open,也可能不适用,这取决于您的Vim 选择运行autocmds 的顺序(顺序没有明确定义)。如果它仍然在打开时运行jshint,您可以为*.js 添加类似的autocmd,并保留g:syntastic_javascript_checkers 未设置。
  • 感谢您引导我回答,@lcd047!

标签: vim jshint eslint syntastic


【解决方案1】:

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

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

在我的例子中,即使.vimrc 中没有设置检查器,syntastic 也会默认在 javascript 上使用 jshint。即使 g:syntastic_javascript_checkers 未设置或设置为 jshint,上述设置仍然有效。

【讨论】:

  • autocmd 上的 BufEnter 绝对不能与 syntastic_check_on_open 一起使用。不过请随意忽略我。
  • @lcd047,也许我发现了一个错误?我仍然得到与上述相同的行为:javascript 文件上的 jshint 和 *.jsx 文件上的 eslint。我的 vimrc 中也有 g:syntastic_check_on_open = 1。我通过 npm 全局安装了两个检查器。作为 syntastic 的主要贡献者,我非常感谢您的帮助。如果我看起来有点教学法,请原谅我(那是我的教师培训和我自己的缺乏经验/兴奋表现)。
  • 错误在于您对应该发生的事情的理解。 check_on_openBufRead 上运行,BufReadBufEnter 之前应用。 b:syntastic_checkers 将在您第一次在活动模式下运行check_on_open 时取消设置。
猜你喜欢
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2023-01-13
  • 2023-03-30
  • 1970-01-01
  • 2012-09-27
相关资源
最近更新 更多