1

たとえば、 gg=G on を実行すると

int main()
{ 
return 0; 
}

に変更します

int main()
{
   return 0;
}

私が欲しいのは -

int main(){
   return 0;
}

「{」は関数プロトタイプ行にある必要があります

4

3 に答える 3

2

私の知る限り:

=インデントを再調整しますが、コードのスタイルを再フォーマットしません。たとえば、コード ブロック スタイル (あなたの質問)。または空行を追加/削除します。スペースの追加/削除 例: a=2 -> a = 2...

{あなたはあなたの前/後を変更するためにこれを行うことができますgg=G:

:%s/)\n\s*{\s*$/) {/g

それらを 1 行に書き込んで、それを 1 つの短い行で行うためのマッピングを作成することもできます。

たとえば、次の行です。

:%s/)\n\s*{\s*$/) {/g|norm! gg=G

変わるだろう:

int main()
{ 
if(foo)
{
return 1;
}
if(a>0)
return a;
for(int i=1;i<20;i++)
{
int foo=0;
foo=i;
}
return 0; 
}

の中へ

int main() {
    if(foo) {
        return 1;
    }
    if(a>0)
        return a;
    for(int i=1;i<20;i++) {
        int foo=0;
        foo=i;
    }
    return 0; 
}

編集

私の元の回答は:g/)$/j、2 つの行を「結合」することを提案しましたが、安全ではないことがわかりました。たとえば、次のようになります。

if (a>0)
  return a;

に変わります

if (a>0) return a;

これは OP では予期されていません。

于 2013-04-27T23:03:03.413 に答える
1

次のようなastyleを使用できます

nnoremap <A-S-f> :w<CR>:!astyle % --style=java<CR>:edit<CR>

それを Alt-Shift-f にバインドします(これはファイルを保存/リロードしますが、これは常にあなたが望むものとは限らないことに注意してください。それを回避する方法はありますが、今はあまり深く入りたくありませんでした)。

もちろん、好みの書式設定のために astyle に渡すオプションを自分で決める必要があります。

于 2013-04-27T23:55:27.260 に答える