VS Code有没有办法缩进开放式括号?

时间:2017-11-20 01:41:54

标签: visual-studio-code indentation

我正在修改VS Code的缩进行为,这样如果我在输入这样的行后按Enter键:

variable = function(param1,

它将缩进到左括号的级别,以便我可以轻松地格式化这样的代码:

variable = function(param1,
                    param2)

我希望它适用于开放方括号和大括号:

variable = function([1, 2, 3, 4
                     5, 6, 7, 8],
                    param2,
                    {'a': 1, 'b': 2,
                     'c': 3, 'd': 4},
                    param4)

我更喜欢它对我使用的几乎所有语言都有这种行为,尽管在C ++或C#中工作时,花括号行为不是必需的(甚至可能是不可取的)。

这与Sublime Text的indent_to_bracket设置非常相似。

有没有办法实现这个目标?如果没有设置,我愿意修补任何必要的东西。我也愿意接受一个可以做到这一点的扩展,或者甚至在必要时编写扩展,并且这样做是有道理的。

3 个答案:

答案 0 :(得分:6)

GitHub上有closed issue这个功能。开发团队最近的评论内容如下:

  

此功能请求将在未来6-12个月的路线图中不予考虑,因此将关闭以保持我们必须保持可操作的问题数量。感谢您的理解和快乐的编码!

因此,在可预见的将来不会包含它。

现在唯一的选择是尝试创建一个完全正确的扩展,甚至可以破解主编辑器源代码。我建议你从这里开始:https://code.visualstudio.com/docs/extensions/overview

答案 1 :(得分:2)

自 2019 年起有一个扩展程序可用,名为 Python Indent。您提到的方式在那里称为“括号对之间”。这是该扩展程序的示例:

data = {'a': 0,
        | # <- pressing enter should put your cursor at the "|"
| # <- This is where default VS Code puts your cursor.

PEP 8中,它被称为“与开始分隔符对齐”。

答案 2 :(得分:1)

看起来ESLint会为你做这件事。

  

此规则的正确代码示例包含2,{“FunctionExpression”:{“parameters”:“first”}}选项:

/*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/

var foo = function(bar, baz,
                   qux, boop) {
  qux();
}

来自indent rule : Function Expressions

安装扩展程序vscode-eslint integration然后

  

如果您没有在本地或全局安装ESLint,请在本地安装的工作区文件夹中运行npm install eslint,或者为全局安装运行npm install -g eslint。

然后像

这样的规则
"indent": ["error", 2, { "FunctionExpression": {"body": 1, "parameters": "first"} }],
.eslintrc.json 文件中的

将执行您想要的操作 - 如果您有

,至少保存
"eslint.autoFixOnSave": true

在您的设置中。 false 是默认值。我不相信你可以在键入时“解决”问题 - 但仅限于保存。您也可以修改此设置

  

//应由ESLint验证的语言ID数组

     

“eslint.validate”:[       “JavaScript的”,       “javascriptreact”     ],