VSCode 使用自动格式删除空格 (C/C++)

VSCode removing spaces with auto format (C/C++)

我最近迁移到 VSCode,我非常喜欢自动格式化,但如何配置它不删除空格?我有一种用于配置 GPIO 引脚的矩阵,我使用空格使其更具可读性,但是一旦我保存并自动格式化,它就会破坏间距!

示例:

_InitIO(GPIOA, (GPIO_IN  | GPIO_DN                               ),  //  A0    IRQ-Mag
               (GPIO_IN  | GPIO_DN                               ),  //  A1
               (GPIO_AF7           | GPIO_PP | GPIO_HIGH | GPIO_1),  //  A2
               (GPIO_IN  | GPIO_UP                               ),  //  A3    Switch

变成:

_InitIO(GPIOA, (GPIO_IN | GPIO_DN),                //  A0    IRQ-Mag
                (GPIO_IN | GPIO_DN),                       //  A1
                (GPIO_AF7 | GPIO_PP | GPIO_HIGH | GPIO_1), //  A2
                (GPIO_IN | GPIO_UP),                       //  A3    Switch

我已经查看了设置中的所有格式选项,但似乎找不到...

VSCode 在工作区目录中查找名为 .clang-format 的文件。参见:https://code.visualstudio.com/docs/cpp/cpp-ide#_code-formatting

要更改自动格式样式,您必须创建 .clang-format 文件并根据 Clang-Format Style Options.

修改它

您可能必须关闭自动格式设置或继续保存文件而不使用文件格式:通过 Command Palette 或使用 Ctrl+K Ctrl+Shift+S 组合键保存而不格式化命令。

编辑

看起来你想要 Disable Formatting on a Piece of Code。它适用于 VSCode.

备选

避免代码艺术

有时在代码中形成一个漂亮的 table 很好,但要保持这种状态是 维护。对于好的软件,维护是最昂贵的部分,所以如果代码艺术很难用基本的自动格式化来维护,它的价值就会下降。只需要一名后续维护者就不会因为没有必要的自动格式设置而把事情搞砸。

避免使用标准自动格式设置难以保持的代码艺术。

下面的怎么样?我怀疑它将与 VS 保持其格式并且足够接近以满足 OP 的代码艺术。

  _InitIO(GPIOA, // 
      (GPIO_IN | GPIO_DN),                       //  A0 IRQ-Mag
      (GPIO_IN | GPIO_DN),                       //  A1
      (GPIO_AF7 | GPIO_PP | GPIO_HIGH | GPIO_1), //  A2
      (GPIO_IN | GPIO_UP)                        //  A3 Switch
      )