首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让VSCode缩进一个没有括号的if语句?

如何让VSCode缩进一个没有括号的if语句?
EN

Stack Overflow用户
提问于 2021-10-01 04:18:07
回答 1查看 276关注 0票数 4

在以下情况下,我希望VSCode在我创建新行时自动缩进:

代码语言:javascript
复制
if(statement)
    func();

当点击换行符时,默认功能会执行以下操作:

代码语言:javascript
复制
if(statement)
func();

这是VSCode中一个长期存在的问题:https://github.com/microsoft/vscode/issues/43244

我很感激任何一种可以实现这种行为的hack/扩展。在github问题链接中还有其他缩进被破坏的例子,但我真的只关心这个简单的例子。

EN

回答 1

Stack Overflow用户

发布于 2021-10-02 15:25:50

我知道如何在不安装扩展的情况下做到这一点。也许有一种更好的方法可以在settings.json中实现,但我找不到。您可以直接从源代码修改语言配置,对我来说,源代码就是C:\Program Files\Microsoft VS Code\resources\app\extensions\cpp\language-configuration.json。这些文件设置有一个guide。我在我的c++语言配置中添加了以下内容:

代码语言:javascript
复制
"onEnterRules": [
        {
            "beforeText": "^\\s*(?:if|while)\\(.*\\)\\s*$",
            "action": {
                "indent": "indent"
            }
        },
        {
            "beforeText": "(?=)",
            "previousLineText": "^\\s*(?:if|while)\\(.*\\)\\s*$",
            "action": {
                "indent": "outdent"
            }
        }
    ]

这是可行的,但不幸的是,由于某些原因,官方的c++ vscode扩展C/C++ for Visual Studio Code破坏了它。

下面是我做这件事的初始方法,它破坏了太多有用的东西。

代码语言:javascript
复制
"indentationRules": {
        "increaseIndentPattern": "^\\s*if\\(.*\\)\\s*$",
        "decreaseIndentPattern": "(?!)"
    }

必须设置字段decreaseIndentPattern (这里的正则表达式永远不会捕获任何内容),否则它会忽略indentationRules字段(我猜他们从来没有测试过是否只设置一个?)请注意,这些编辑需要使用管理权限进行,我发现VSCode进行这些编辑非常方便。此外,在关闭VSCode之前,这些更改不会生效。

因此,事实证明,我遇到了与PR中提到的相同的问题:https://github.com/microsoft/vscode/pull/115454。此修复破坏了过多的其他vscode缩进行为,例如在if语句中第一个正确缩进的行之后进行缩进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69400313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档