【问题标题】:Auto format with specific indentation/alignment C/C++ in vscode在 vscode 中使用特定缩进/对齐 C/C++ 自动格式化
【发布时间】:2020-01-13 00:42:03
【问题描述】:

所以我正在使用 vscode 在C 做一个学校项目。我们彻底评分的最重要的事情之一是整洁的代码格式。假设我已经声明了 3 个这样的变量

int     i;
char    *s;
size_t  t;

它们必须完全像这样对齐。现在在 settings/settings.json 中启用 vscode "editor.formatOnSave": true` 将其更改为

int i;
char *s;
size_t t;

现在是 vscode 中的一种方法,可以像第一个 sn-p 一样以特定方式保持这些变量对齐,还是自动完成对齐?

【问题讨论】:

  • 很遗憾您必须使用无意义的格式。请注意,您必须编写的内容很糟糕,因为假设您必须添加一行 some_type_with_long_name x; 然后您必须修改上面的所有行,这是版本控制中的主要烦恼。 char *s; 也应该是 char* s; (但是,这有点基于意见)
  • @foreknownas_463035818 我知道,但我们必须这样做,否则我们的评分为 0。
  • 在 VSCode 中,有一些插件,例如 beautify 可以帮助您对齐,例如 = 符号或空格。你只需要知道如何配置它
  • @foreknownas_463035818,正如您所说,char* schar *s 的问题是基于意见的,但我决定保留第二个符号只是为了指定类型是 char 而不是char*,以防你想在同一行有多个声明
  • @PhoenixBlue 更常见的方法是每行只有一个变量声明。是的,类型是 char* 而不是 char,这正是写 char* s; 而不是 char *s; 的基本原理 * 是类型的一部分,而不是变量名的一部分

标签: c++ c visual-studio-code vscode-settings


【解决方案1】:

使用 C/C++ 扩展,您可以配置格式化程序。使用clang-format 中的AlignConsecutiveDeclarations 来对齐这样的变量。

配置示例(C_Cpp.clang_format_style):

{ BasedOnStyle: LLVM, AlignConsecutiveDeclarations: true }

所以在你的settings.json 中你可以有这样的东西:

{
  "C_Cpp.clang_format_style": "{ BasedOnStyle: LLVM, AlignConsecutiveDeclarations: true }",
}

【讨论】:

  • 现在如何在 C/C++ 扩展中进行设置?
  • 我用一个例子编辑了我的答案,你只需要访问 vscode 配置文件
  • 人们可能还对AlignConsecutiveAssignments: true 感兴趣。这与分配的等号对齐。
猜你喜欢
  • 2010-10-15
  • 1970-01-01
  • 2011-01-22
  • 2018-01-03
  • 2010-09-10
  • 2021-03-26
  • 2021-02-24
  • 2022-11-04
相关资源
最近更新 更多