我开始使用带有vim的syntastic插件在我的javascript代码中报告皮棉错误。 .eslintrc文件。

有什么方法可以通过敲击来修复一些常见的错误,例如缺少分号,缺少空格等?

编辑:

我发现eslint有一个选项

  --fix Automatically fix problems


可用于此类情况。
我需要运行此命令让eslint解决这些问题

eslint --fix -c myconfig file.js


我想知道如何与vim集成?

评论

1.您不需要该插件即可进行语法检查。 2.自动修复错误是一个非常糟糕的主意。

不是所有的错误我都在谈论错误,例如=周围的空格,if块周围的空格,缩进等。这些是与代码样式相关的错误,不是实际错误。
简短的答案是肯定的,当然可以。您需要定义一个自定义函数来解析快速修复程序中的行,以查找要修复的特定错误,然后根据这些错误执行命令。您可以轻松地使用快速修复程序将您带到每个错误的位置。然后,您将功能映射到按键。 map 调用Function()但这是一个非常自定义的定制函数,您需要编写此函数以适合您的需求。罗曼(romainl)的观点是,如果做错了事,很容易造成弊大于利。建议谨慎

使用漂亮的打印机强制执行一致的格式。

我需要运行此命令来解决这些问题-自您提出要求后,我便将枪送给您,但它仍指着您的脚:fixmyjs(在Google上首次投放),并在SO上看到相关的答案。您确实应该考虑更改这些设置,以便针对原始版本和修补版本运行vimdiff,而不是替换原始版本。

#1 楼

如评论中所述,请注意此修改对您的工作环境造成的后果(确切地知道您用来“修复”事物的eslint规则)。用语法进行eslint执行很简单。只需将其添加到您的.vimrc中:做。因此,vim必须以某种方式再次加载文件(手动方式是简单地在正常/命令模式下键入:e)。为此,我们可以将autoread选项与checktime结合使用:
文件。但是,由于语法在同一事件BufWritePost上使用其自己的autocmd,因此我们必须在语法添加其自身之后添加我们的autocmd。我发现在VimEnter上添加autocmd时就是这种情况:在文件上保存.vimrc)。

#2 楼

杰普兹(Jepz)答案中给出的解决方案对我而言并不完全有效。使用eslint选项正确调用了--fix。但是,可能是因为内部结构发生了变化,但是好像在checktime结束之前调用了eslint --fix,所以文件重装无法正常工作,从而在下一次保存时触发了file has changed, are you sure you want to write to it?

但是,通过深入研究问题,我发现了一个隐藏的钩子,似乎在Syntastic检查完成后触发,称为SyntasticCheckHook(源代码)。检查已经执行。

这是我的最终代码: ,它本身支持自动修复。