eee*_*gnu 7 c++ visual-studio-code
我希望 VSCode 在以下情况下创建换行符时自动缩进:
if(statement)
func();
Run Code Online (Sandbox Code Playgroud)
当点击换行符时,默认功能会执行以下操作:
if(statement)
func();
Run Code Online (Sandbox Code Playgroud)
这是 VSCode 中长期存在的问题:https ://github.com/microsoft/vscode/issues/43244
我很感激任何可以完成此行为的黑客/扩展。github 问题链接中还有其他缩进被破坏的情况,但我只关心这个简单的情况。
弄清楚如何在不安装扩展的情况下做到这一点。可能有更好的方法可以完成,settings.json
但我找不到。您可以直接从源代码修改语言配置,对我来说是C:\Program Files\Microsoft VS Code\resources\app\extensions\cpp\language-configuration.json
. 这些文件设置有一个指南。我将以下内容添加到我的 C++ 语言配置中:
"onEnterRules": [
{
"beforeText": "^\\s*(?:if|while)\\(.*\\)\\s*$",
"action": {
"indent": "indent"
}
},
{
"beforeText": "(?=)",
"previousLineText": "^\\s*(?:if|while)\\(.*\\)\\s*$",
"action": {
"indent": "outdent"
}
}
]
Run Code Online (Sandbox Code Playgroud)
这是可行的,但不幸的是官方 c++ vscode 扩展C/C++ for Visual Studio Code
由于某种原因破坏了它。
下面是我最初的方法,它破坏了太多有用的东西。
"indentationRules": {
"increaseIndentPattern": "^\\s*if\\(.*\\)\\s*$",
"decreaseIndentPattern": "(?!)"
}
Run Code Online (Sandbox Code Playgroud)
必须设置该字段decreaseIndentPattern
(这里正则表达式永远不会捕获任何内容),否则它会忽略该indentationRules
字段(我猜他们从未测试过是否只设置一个字段?)请注意,这些编辑需要使用管理权限来完成,我发现 VSCode制作它们非常方便。此外,这些更改只有在 VSCode 关闭后才会生效。
事实证明,我遇到了此 PR 中提到的相同问题: https: //github.com/microsoft/vscode/pull/115454。此修复破坏了太多其他 vscode 缩进行为,例如在 if 语句中第一个正确缩进的行之后取消缩进。
归档时间: |
|
查看次数: |
1292 次 |
最近记录: |