Vim - 当代码在文字字符串中有括号时如何实现正确的缩进

Vim - how to achieve correct indentation when code has parentheses in literal string

我有以下 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;
                        }

这种行为在许多编程语言中都会发生,只要我们将 '(''{' 作为文字字符串的一部分。文件的其余部分也得到了不正确的缩进。在这种情况下如何实现正确的缩进?

使用双引号似乎可行:

var color="rgba(";

试试这个插件:

JavaScript Indenter