Javascript嵌套对象的Vim缩进不正确

Vim indentation incorrect for Javascript nested objects

本文关键字:缩进 不正确 Vim 嵌套 对象 Javascript      更新时间:2023-09-26

我在Vim中使用auto-indentvim-javascript编写javascript。然而,我不能得到javascript对象缩进正确。例如:

这个,我手动缩进:

var NetworkSchema = new Schema({
    'timeStamp' : { type : Date, index: true },
    "avaiable" : Boolean,
    "status" : String,
    "metrics" : [ { "txDropped" : { "data" : Number,
                           "type" : String,
                           "unit" : String
                          }
                   },
                   { "txErrors": { "data" : Number,
                           "type" : String,
                           "unit" : String
                          }
                   },
                   { "txOverruns": { "data" : Number,
                           "type" : String,
                           "unit" : String
                          }
                   }
                  ]
});

看起来像这样,当使用gg=G:

自动缩进时
var NetworkSchema = new Schema({
    'timeStamp' : { type : Date, index: true },
    "avaiable" : Boolean,
    "status" : String,
    "metrics" : [ { "txDropped" : { "data" : Number,
        "type" : String,   
        "unit" : String    
    }                     
    },             
    { "txErrors": { "data" : Number,
        "type" : String,   
        "unit" : String    
    }                     
    },             
    { "txOverruns": { "data" : Number,
        "type" : String,   
        "unit" : String    
    }                     
    }              
    ]             
});

我如何使缩进正确的嵌套对象自动?

这是vim- javascript的问题跟踪器的问题。

无论如何,我使用js-美化来格式化我的JavaScript:

command! -buffer -range=% Format let b:winview = winsaveview() |
  ' execute <line1> . "," . <line2> . "!js-beautify -f - -j -B -s " . &shiftwidth |
  ' call winrestview(b:winview)

使用以下命令格式化整个缓冲区:

:Format

使用以下命令格式化当前可视选择所覆盖的行('<,'>范围会自动为您插入):

:'<,'>Format

使用以下命令格式化任意范围所覆盖的行:

:23,89Format