Vim autoindent (gg=G) ужасно сломан для отступа JS

Моя конечная цель здесь заключается в использовании gg=G для автоматического встраивания всего моего кода JS, соответствующего eslintrc.js файл.

Итак, в настоящее время у меня есть syntastic а также vim-javascript глядя на мой код JS со следующим в моем .vimrc

let g:syntastic_javascript_checkers=["eslint"]

Допустим, у меня есть несколько приличных JS, как следующие

const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin');

const PATHS = {
  app : path.join(__dirname, 'app'),
  build : path.join(__dirname, 'build'),
};

const commonConfig = {
  entry : {
    app : PATHS.app,
  },
  output : {
    path : PATHS.build,
    filename : '[name].js',
  },
  plugins : [
    new HtmlWebpackPlugin({
      title : 'Webpack Demo',
    }),
  ],
};

gg=G (обычный режим) команда изменит вышеперечисленное на следующее.

const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin');

const PATHS = {
app : path.join(__dirname, 'app'),
      build : path.join(__dirname, 'build'),
};

const commonConfig = {
entry : {
app : PATHS.app,
        },
output : {
path : PATHS.build,
       filename : '[name].js',
         },
plugins : [
              new HtmlWebpackPlugin({
title : 'Webpack Demo',
}),
],
    };

Что не круто.

Btw, vim-js-indent а также vim-jsx-improve тоже ничего не делал

Любая помощь очень приветствуется, большое спасибо заранее.

1 ответ

Решение

Ваш "не крутой" пример является результатом "общего" отступа, который вы получаете, когда Vim не распознает ваш буфер как JavaScript и / или не применяет специфичные для JavaScript правила отступа.

Этот код правильно с отступом с этой минимальной настройкой:

$ vim -Nu NONE --cmd 'filetype indent on' filename.js

который:

  • обнаруживает, что ваш буфер содержит JavaScript,
  • применяет специфичные для JavaScript правила отступов.

Для обеспечения правильного отступа необходимо добавить эту строку в vimrc:

filetype indent on
Другие вопросы по тегам