在以下情况下,我希望VSCode在我创建新行时自动缩进:
if(statement)
func();当点击换行符时,默认功能会执行以下操作:
if(statement)
func();这是VSCode中一个长期存在的问题:https://github.com/microsoft/vscode/issues/43244
我很感激任何一种可以实现这种行为的hack/扩展。在github问题链接中还有其他缩进被破坏的例子,但我真的只关心这个简单的例子。
发布于 2021-10-02 15:25:50
我知道如何在不安装扩展的情况下做到这一点。也许有一种更好的方法可以在settings.json中实现,但我找不到。您可以直接从源代码修改语言配置,对我来说,源代码就是C:\Program Files\Microsoft VS Code\resources\app\extensions\cpp\language-configuration.json。这些文件设置有一个guide。我在我的c++语言配置中添加了以下内容:
"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破坏了它。
下面是我做这件事的初始方法,它破坏了太多有用的东西。
"indentationRules": {
"increaseIndentPattern": "^\\s*if\\(.*\\)\\s*$",
"decreaseIndentPattern": "(?!)"
}必须设置字段decreaseIndentPattern (这里的正则表达式永远不会捕获任何内容),否则它会忽略indentationRules字段(我猜他们从来没有测试过是否只设置一个?)请注意,这些编辑需要使用管理权限进行,我发现VSCode进行这些编辑非常方便。此外,在关闭VSCode之前,这些更改不会生效。
因此,事实证明,我遇到了与PR中提到的相同的问题:https://github.com/microsoft/vscode/pull/115454。此修复破坏了过多的其他vscode缩进行为,例如在if语句中第一个正确缩进的行之后进行缩进。
https://stackoverflow.com/questions/69400313
复制相似问题