【问题标题】:How to get Airbnb's JavaScript style eslint guide working in vim with react, es6?如何让 Airbnb 的 JavaScript 风格的 eslint 指南在 vim 中与 react、es6 一起工作?
【发布时间】:2016-06-03 14:31:49
【问题描述】:

我是 vim 的新手,并开始一个新的 javascript 项目,编辑器为 vim(目前也在学习)。

我发现 AirbnbGoogle 和其他一些提供了一些样式指南和 linting 的预设。我还发现我可以使用合成 vim 插件,它可以帮助我在 vim 中启用 linting 和样式检查。

但我不知道如何在 vim 中链接这些东西?我需要创建哪些配置文件以及如何在 Syntastic vim 插件中启用这些功能?我还想在文件保存功能上启用 jscs 自动修复。

编辑:我也在使用 react with es6。

任何基本或详细的方向,实现相同的教程链接都会有所帮助。

谢谢

【问题讨论】:

    标签: javascript vim eslint jscs


    【解决方案1】:

    在您的主目录中创建(或编辑)名为 .vimrc 的文件,您可以通过将此行添加到您的 .vimrc 来告诉 syntastic 使用哪个 linter

    let g:syntastic_javascript_checkers = ['jscs']
    

    至于在写入时自动修复代码,请参阅此问题的答案:How can I integrate jscs autofix feature into vim?


    建议/更新

    JSCS 现在与 ESlint 合并,所以你最终应该切换 linter,你可以编辑 .vimrc 中的行以使用 'eslint' 代替;您可以使用.eslintrc 文件或eslint's configuration docs 中详述的其他几个选项来配置 eslint,以使其了解 es6/react 的内容,目前我有 my .vimrc 设置以在不同的情况下使用不同的 linter,如下所示:

    if has("autocmd")
        " use google/jshint for js "
        autocmd FileType javascript.js let g:syntastic_javascript_checkers = ['gjslint','jshint']
        " use eslint for jsx "
        autocmd FileType javascript.jsx let g:syntastic_javascript_checkers = ['eslint']
    else
        " if an older version of vim without autocmd just use google/jshint "
        let g:syntastic_javascript_checkers = ['gjslint','jshint']
    endif
    

    我已修改 that answer 中的代码以使用 eslint

    function! FixJS()
        "Save current cursor position"
        let l:winview = winsaveview()
        "run eslint fix on current buffer"
        ! eslint --fix %
        "Restore cursor position"
        call winrestview(l:winview)
    endfunction
    command! FixJS :call FixJS()
    
    "Run the FixJS command just before the buffer is written for *.js files"
    autocmd BufWritePre *.js FixJS
    

    应该在写入时或使用命令:FixJS时自动修复代码

    【讨论】:

    • jscs 与 eslint 合并,是不是意味着 eslint 也会提供 jscs 的功能?我还需要通过 npm 安装 eslint 吗?另外请建议我如何使用 Airbnb 预设作为我的 linting 规则?
    • 是的,现在 eslint 有一个 --fix 选项,它应该可以完成 jscs 的所有功能,jscs 团队现在支持 eslint。
    • @JKirchartz 有没有办法不用在每个模块中本地安装 eslint 样式就可以使用它?
    • @zipp 如果我理解正确的话,你应该已经用npm install -g eslint全局安装了eslint
    • @JKirchartz 我明白了,但你如何告诉 eslint 始终使用 airbnb 样式,而不是每次都在项目中本地设置?
    猜你喜欢
    • 2017-12-29
    • 2018-11-26
    • 2022-01-08
    • 2021-03-17
    • 2019-08-24
    • 2018-08-24
    • 2011-03-20
    • 2021-05-03
    • 2012-09-25
    相关资源
    最近更新 更多