このような行があるとしましょう
1 int some_function() {
2 int x = 3; // Some silly comment
等々。インデントはスペースで行われ、各インデントは2つのスペースです。
各インデントを3つのスペースに変更します。単純な正規表現
s/ {2}/ /g
インデントされていないスペースが変更されるため、機能しません。この場合、前の2つのスペース// Some silly comment
を3つのスペースに変更しますが、これは望ましくありません。(行の最後にテーブルまたはコメントが配置されている場合、これはさらに悪化します。)
単純に使用することはできません
/^( {2})+/
何に置き換えますか?+
正規表現でaが何回一致したかを簡単に知る方法がわからないため、挿入する変更されたインデントの数がわかりません。
いつでも行ごとにインデントを切り取り、測定し、新しいインデント文字列を作成して、それを行に追加することができますが、正規表現があれば、はるかに簡単になります。
上記のようにインデントレベルを置き換える正規表現はありますか?