【问题标题】:Is there any way for VS Code to indent to an open bracket?VS Code 有没有办法缩进到左括号?
【发布时间】:2018-05-03 04:44:00
【问题描述】:

我正在寻找修改 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 设置非常相似。

有没有办法做到这一点?如果没有设置,我愿意修补任何必要的东西。我也对可以做到这一点的扩展持开放态度,甚至在必要且有意义的情况下编写扩展。

【问题讨论】:

    标签: visual-studio-code indentation


    【解决方案1】:

    在 GitHub 上有一个 closed issue 用于此功能。开发团队最近发表的评论如下:

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

    因此,在可预见的未来不会被收录。

    目前唯一的选择是尝试创建一个完全执行此操作的扩展,甚至破解主编辑器源代码。我建议你从这里开始:https://code.visualstudio.com/docs/extensions/overview

    【讨论】:

    • 这似乎是我获得我想要的东西的唯一途径......太糟糕了,我必须从头开始编写扩展,但也许在某些时候我会解决它!
    • 荒谬的是,一年多过去了,还没有实施。
    【解决方案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中,称为“与开始分隔符对齐”。

    【讨论】:

    • 简单直接的解决方案。为此,我在网上搜索了一个小时。谢谢!
    【解决方案3】:

    看起来 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”, “javascript反应” ],

    【讨论】:

    • 这是朝着正确方向迈出的一步,但是 a) 我现在没有编写任何 Javascript,所以 ESLint 对我来说用处不大,并且 b) 它发生对我来说相当重要当我创建换行符而不是必须先保存文件时,这是一种适当的缩进行为。
    • @GuyGizmo 你主要用 VSCode 写什么语言?我也在使用 Tslint 编写 Typescript,它提供了您正在寻找的功能。
    • 目前是 C#,但我也经常用 C++ 和 Python 编写。偶尔也会出现任何数量的其他语言。基本上我需要一个适用于任何语言的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多