搜尋

首頁  >  問答  >  主體

如何在vim中快速格式化這個程式碼?

雷雷
高洛峰高洛峰2776 天前644

全部回覆(9)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 16:35:49

    其實和原始寫法有很大關係。
    #include
    int main(int argc, char *argv[])
    {
    for(i in f){
    if(i ==9 ){
    printf("1");
    } else{
    printf("2");
    }
    }
    }
    如果像上面這樣子的習慣寫法,用gg=G 的結果很酷:
    #include
    int main(int argc,
    #include

    int main(int argc, char *argv[])

    {

    for(i in f){
        if(i ==9 ){
            printf("1");
        }else{
            printf("2");
        }
    }

    }

    🎜堪稱完美。 🎜

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 16:35:49

    雷雷

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 16:35:49

    其實我用比較多的是,在visual 模式下, 移到行最開始 按下:> 即 同時按下'shift + .'

    回覆
    0
  • 黄舟

    黄舟2017-05-16 16:35:49

    !astyle --style=[你想要的格式] -p -H --suffix=none %

    如果你裝了 astyle

    回覆
    0
  • PHPz

    PHPz2017-05-16 16:35:49

    第一步:ggvG ///< 先回到首行, 然后选择模式, 全选代码
    第二步:= ///< = 一般用於均等佈局, 這裡表示程式碼縮排. vim 多splite下, 還可以 均等調整每個splite的大小

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 16:35:49

    gg
    vG
    =

    回覆
    0
  • 高洛峰

    高洛峰2017-05-16 16:35:49

    對, 10086和tdblq沒有註意到題主對於括號的要求.

    先上命令

    %s/ {/^M{^M/g
    %s/ }/^M}/g
    %s/};/}/g
    %s/)\([^;]\+\);/)^M;/g
    gg
    =G

    第1~3行是在處理花括號的問題.

    第4行是為了解決

    for(i=0;i<5;i++)j++;
    变成
    for(i=0;i<5;i++)
        j++;

    第5~6行就是全文自動縮進了.
    注意 其中的^M不是直接輸入的, 而是"ctrl+v"+"回車"得到的.

    但是這些也不過是解決的是格式的問題.
    題主說要從一個for循環的代碼"格式化"到一個有while的代碼,
    我猜是筆誤吧?

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 16:35:49

    其實嚴格來講,vim是搞不定的。 gg=G能作的只是以行為單位調整縮排。真的要lz那樣的需求需要外部工具,像是indent。假設你有一個完美的indent的配置。那麼在vim裡面可以用%!indent來搞定

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 16:35:49

    選擇要縮排的行,大V進入行模式,然後直接按>右縮進,<左縮進,一行一行自己排排就好了_(:з”∠)_

    回覆
    0
  • 取消回覆