現在、VIM の C のインデント設定で次のように設定しています。
set cinoptions=l1
これにより、自動インデントがステートメントのインデントを自動的に処理できるcase
ようになるため、次のタイプの配置が自動的に取得されます。
switch(intForSwitching) {
case 1: {
// Comment
// More comments
break;
}
case 2: {
//Comment
break;
}
default: {
break;
}
}
ただし、これは各ケース (ステートメントの後の) が中括弧で囲まれている場合にのみ機能します{}
。ちょうどそのケースで新しい一時変数を宣言する必要がある場合にのみ、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
ステートメントが機能しなくなりました。以前は、autoindent はすべてのプリプロセッサ ディレクティブを列 0 に揃えていました。つまり、次のようになります。
char c;
if (c) {
#ifdef TESTING
printf("%c", c);
#endif
}
今、それは私が望まないコードに合わせます。すなわち:
char c;
if (c) {
#ifdef TESTING
printf("%c", c);
#endif
}
中括弧を使用して個々のケースを囲む場合に既存の配置を保持し、中括弧を使用しない場合にも同様の配置を行う方法はありますか?
ありがとうございました。