我对 VSCode 中智能感知自动完成片段的方式有疑问,目前,当我编写 if 语句时,它会自动完成:
if (condition)
{
// some code
}
但是,我希望它自动完成:
if (condition) {
// some code
}
如果我在 VSCode 中使用格式化程序,它会将其格式化为上面的约定,但是我希望避免必须按单独的命令才能发生这种情况。最佳情况下,智能感知代码片段默认会像这样格式化。
如有任何帮助,我们将不胜感激。
最佳答案
这是一个比您想象的更大的主题
因此,通常对于 C++,首选格式化程序是CLang Formatter。 CLang 的工具非常好,ECMAScript 的 ESLint 一直在做笔记,并且实现了许多在 CLang 格式化程序中找到的相同规则,特别是与括号有关的规则。
VSCode 有一个可用于 C++ 的默认格式化程序。这实际上取决于您的使用方式。
问题:
本质上,您的要求是使用某种样式插入括号,而不是自动格式化为特定样式。
解决方案
您使用的代码片段显然是预定义的,并且 VSCode 支持编写您自己的代码片段。
像这样:
// FILE: @(".../.config/code/user/snippets/cpp.json")
{
"Print to console": {
"prefix": "if(",
"body": ["if($1){\n$2\n}", "$2"],
"description": "If Condition"
}
}
片段的问题是: 您需要定义您使用的每个片段,并为每个片段设置样式。
VSCode Snippets Documentation (official)
代码片段文件是可扩展的,这意味着它们可以变成 VSCode 扩展。由于与大多数其他扩展相比,代码片段库编写起来既快速又简单,因此 Visual Studio Marketplace 中提供了很多此类扩展,并且都是 100% 免费下载。
您可以下载一个包含您不需要的代码片段的包,然后在整个文档中需要的地方添加“\n”行字符。
首选解决方案
这可能不是你想要的。但最好的方法是效仿 90% 的 C/Cpp 开发人员在 VSCode 中编写 c/cpp 的做法;使用 CLang 格式化程序,并配置 VSCode 在保存时格式化您的代码。我总是按 CTRL + S,因为我不喜欢因为忘记保存而将工作付诸东流。我的 if 语句都是自动格式化的,与您在问题中显示的示例完全相同。
关于c++ - 在 C++ VSCode 中自动格式化同一行的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71126222/