我正在修改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
设置非常相似。
有没有办法实现这个目标?如果没有设置,我愿意修补任何必要的东西。我也愿意接受一个可以做到这一点的扩展,或者甚至在必要时编写扩展,并且这样做是有道理的。
答案 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” ],