#include<stdio.h>
int main(int argc, char *argv[])
{
int i=0;
if (i != 0) {i++; }
else {i--; };
for(i=0;i<5;i++)j++;
printf("i=%d,j=%d\n",i,j);
return 0;
}
上面的代碼如何快速格式化成這個(gè)樣子?
#include
int main(int argc ,char* argv[])
{
int a = 4;
int b = 5;
int f_a = factorial(a);
int f_b = factorial(b);
while(1)
{
if(cmp(f_a,f_b))
{
printf("f_a is bigger than f_b\n");
}
else
{
printf("f_a is not bigger than f_b\n");
}
sleep(100);
}
return 0;
}
不用插件,自己可否寫一個(gè)簡單的模板文件,用來格式化文件?
10086的解答結(jié)果不對。
ggvG
=
變成
#include<stdio.h>
int main(int argc, char *argv[])
{
int i=0;
if (i != 0) {i++; }
else {i--; };
for(i=0;i<5;i++)j++;
printf("i=%d,j=%d\n",i,j);
return 0;
}
擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級軟件工程師等職務(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 + .'
第一步:ggvG
///< 先回到首行, 然后選擇模式, 全選代碼
第二步:=
///< = 一般用于均等布局, 這里表示代碼縮進(jìn). vim 多splite下, 還可以 均等調(diào)整每個(gè)splite的大小
對, 10086和tdblq沒有注意到題主對于括號的要求.
先上命令
%s/ {/^M{^M/g
%s/ }/^M}/g
%s/};/}/g
%s/)\([^;]\+\);/)^M\1;/g
gg
=G
第1~3行是在處理花括號的問題.
第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),一行一行自己排排就好了_(:з」∠)_