Vim - как да постигнете правилен отстъп, когато кодът има скоби в буквален низ

Имам следния javascript код:

function abc(alpha) {
    if(alpha == undefined) { alpha='0.5' };
    var color='rgba(';
    for(var ii =0; ii < 3; ii++) {
       color += Math.round(Math.random()*255) + ",";
    }
    color += alpha;
    color += ')';
    return color;
}

Vim прави отстъпи над кода като:

function abc(alpha) {
        if(alpha == undefined) { alpha='0.5' };
        var color='rgba(';
                        for(var ii =0; ii < 3; ii++) {
                        color += Math.round(Math.random()*255) + ",";
                        }
                        color += alpha;
                        color += ')';
                        return color;
                        }

Този вид поведение се среща в много езици за програмиране, когато имаме '(' или '{' като част от литерал низ. Останалата част от файла също получава неправилен отстъп. Как да постигнем правилен отстъп в такива случаи?


person workwise    schedule 18.03.2015    source източник


Отговори (2)


Използването на двойни кавички изглежда работи:

var color="rgba(";
person tivn    schedule 18.03.2015
comment
Това е странно, ако това е, което vim изисква - по конвенция използвам единични кавички за JS низове, тъй като това позволява правилно използване на двойни кавички за HTML атрибути, вградени в тези низове. - person Alnitak; 18.03.2015
comment
Предполагам, че форматът по подразбиране за javascript е просто да третира вашия текст като C изходен код (вижте $VIMRUNTIME/indent/javascript.vim, също stackoverflow.com/questions/1652765/ отговор от @jamessan ). Както знаете, C низ използва само двойни кавички. Може би това е причината единичните кавички да не работят. - person tivn; 18.03.2015

Опитайте този плъгин:

JavaScript Indenter

person qiubix    schedule 18.03.2015