我目前在 VIM 中 C 的缩进设置中有以下设置:
set cinoptions=l1
这允许 autoindent 自动处理case
语句的缩进,因此我自动获得以下类型的对齐:
switch(intForSwitching) {
case 1: {
// Comment
// More comments
break;
}
case 2: {
//Comment
break;
}
default: {
break;
}
}
但是,这仅在每个案例(在语句之后)都用大括号 . 包裹时才有效{}
。如果我需要在这种情况下声明新的临时变量,我只在 case 语句中使用大括号,因为它引入了新级别的块范围。因此,以下示例给出了我不想要的缩进,因为 case 语句与其执行的代码对齐,这使得将 case 语句与与其关联的代码块分开变得更加困难:
// This is what I get
switch(intForSwitching) {
case 1: {
// Comment
// More comments
break;
}
case 2:
//Comment
break;
default:
break;
}
// This is what I want
switch(intForSwitching) {
case 1: {
// Comment
// More comments
break;
}
case 2:
//Comment
break;
default:
break;
}
此外,ifdef
语句不再起作用。以前,自动缩进会将所有预处理器指令对齐在第 0 列,即:
char c;
if (c) {
#ifdef TESTING
printf("%c", c);
#endif
}
现在,它将它与我不想要的代码对齐。IE:
char c;
if (c) {
#ifdef TESTING
printf("%c", c);
#endif
}
有没有办法在我使用大括号包围单个案例时保留现有的对齐方式,并且在我不使用大括号的情况下也有类似的对齐方式?
谢谢你。