擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級(jí)軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
實(shí)際上和原始寫法有很大關(guān)系。
#include<stdio.h>
int main(int argc, char *argv[])
{
for(i in f){
if(i ==9 ){
printf("1");
}else{
printf("2");
}
}
}
如果像上面這樣子的習(xí)慣寫法,用 gg=G 的結(jié)果很酷:
#include<stdio.h>
int main(int argc, char *argv[])
{
for(i in f){
if(i ==9 ){
printf("1");
}else{
printf("2");
}
}
}
堪稱完美。
其實(shí)我用比較多的是,在visual 模式下, 移到行最開始 按下:> 即 同時(shí)按下'shift + .'
!astyle --style=[你想要的格式] -p -H --suffix=none %
如果你裝了 astyle
第一步:ggvG
///< 先回到首行, 然后選擇模式, 全選代碼
第二步:=
///< = 一般用于均等布局, 這里表示代碼縮進(jìn). vim 多splite下, 還可以 均等調(diào)整每個(gè)splite的大小
對(duì), 10086和tdblq沒有注意到題主對(duì)于括號(hào)的要求.
先上命令
%s/ {/^M{^M/g
%s/ }/^M}/g
%s/};/}/g
%s/)\([^;]\+\);/)^M;/g
gg
=G
第1~3行是在處理花括號(hào)的問題.
第4行是為了解決
for(i=0;i<5;i++)j++;
變成
for(i=0;i<5;i++)
j++;
第5~6行就是全文自動(dòng)縮進(jìn)了.
注意 其中的^M不是直接輸入的, 而是"ctrl+v"+"回車"得到的.
但是這些也不過是解決的是格式的問題.
題主說要從一個(gè)for循環(huán)的代碼"格式化"到一個(gè)有while的代碼,
我猜是筆誤吧?
其實(shí)嚴(yán)格來講,vim是搞不定的。gg=G能作的只是以行為單位調(diào)整縮進(jìn)。真的要lz那樣的需求需要外部工具,比如indent。假設(shè)你有一個(gè)完美的indent的配置。那么在vim里面可以用%!indent來搞定
選擇要縮進(jìn)的行,大V進(jìn)入行模式,然后直接按>右縮進(jìn),<左縮進(jìn),一行一行自己排排就好了_(:з」∠)_