0

この種のコード構造により、私見では、コードが読みにくくなります。

int func() {
  [...]
}

それは好みの問題ですが、私はこれを好みます:

int func()
{
  [...]
}

そのため、最初の例のコードを2番目の例のように見せるために、テキストエディタに適用する正規表現を作成しようとしています。

私は次のようなものを思いついた^([\t]*)([^\t{]*)({.*)$(これがこのようなものであったかどうかは正確には覚えていない)
アイデアは、{空白以外の文字(おそらく関数ヘッダーまたは制御構造)の前にaが見つかった場合、行を分割するというものですを次の行に送信し{ますが、元の行のインデントレベル(つまり、同じ数のタブ)を保持します。

インデントレベルを維持することについての最後の部分は、私が正しく理解できないことです。
助けていただければ幸いです。

--PS
:私のコーディング標準に同意しないでください。ただし、ここではそれが主要な主題ではないことを覚えておいてください。

4

1 に答える 1

0

これが最初の試みです。

ファイル.cpp:

int main() {
    for (;;) {
        break;
    }
    return 0;
}

出力の使用sed -r s/^\(\\s*\)\(.*\)\\{$/\\1\\2\\n\\1{/ file.cpp:

int main() 
{
    for (;;) 
    {
        break;
    }
    return 0;
}

sed で行を選択する

  1. 行頭のスペースを取得します^\(\\s*\)
  2. 最後の開き中かっこ以外のすべてを取得し\(.*\)ます。
  3. 行の終わりまで左中かっこをつかみ\\{$ます 。

代用

  1. 1 番目と 2 番目の後方参照を戻します\\1\\2
  2. 改行を挿入し、最初の後方参照を再度追加します。
  3. ブレースを開く。
于 2016-12-09T07:19:09.920 に答える