c++ - 在 C++ VSCode 中自动格式化同一行的大括号

标签 c++ visual-studio-code

我对 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/

相关文章:

c++ - "Instances of types are called objects"的含义

c++ - 如果我不想管理我指向的对象的内存,我应该使用 unique_ptr 吗?

Javascript 重载函数由 Visual Studio 代码智能感知检测

visual-studio-code - 如何在 VS Code 中安装已弃用的扩展?

ubuntu - 在 VSCode 和 Ubuntu 中从 go 返回到定义?

c++ - 为什么 VS Compiler 不在 C++ 上自动初始化局部变量?

php - 如何使用 FastCGI 应用程序扩展 C++ HTTP 服务器?

c++ - 使用 C++ 的缓存锁定模式

Typescript Mongoose 在 VS Code 中获取架构字段的 IntelliSense 或警告

java - VSCode Java 调试器抛出未知错误