Comment formater rapidement ce code dans vim ?
高洛峰
高洛峰 2017-05-16 16:33:49
0
9
640
#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;
}

上面的代码如何快速格式化成这个样子?

#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;
    }
    
    不用插件,自己可否写一个简单的模板文件,用来格式化文件?
    
    10086的解答结果不对。
    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年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(9)
仅有的幸福

En fait, cela a beaucoup à voir avec la méthode d'écriture originale.
#include<stdio.h>
int main(int argc, char *argv[])
{
for(i in f){
if(i ==9 ){
printf("1");
} else{
printf("2");
}
}
}
Si vous écrivez comme ci-dessus, le résultat de l'utilisation de gg=G est cool :
#include<stdio.h>
int main(int argc, char *argv[])
{

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

}

C'est parfait.

phpcn_u1582
gg=G
左手右手慢动作

En fait, ce que j'utilise le plus, c'est, en mode visuel, de passer au début de la ligne et d'appuyer sur : > C'est-à-dire d'appuyer sur 'shift + .'

黄舟

!astyle --style=[le format souhaité] -p -H --suffix=none %

Si vous avez installé astyle

PHPzhong

Première étape :ggvG ///< 先回到首行, 然后选择模式, 全选代码
第二步:= ///< = Généralement utilisé pour une mise en page égale, représente ici l'indentation du code avec plusieurs fractionnements, vous pouvez également ajuster la taille de chaque fractionnement de manière égale

.
小葫芦

Oui, 10086 et tdblq n'ont pas prêté attention à l'exigence de parenthèses dans la question.

Donnez-moi d'abord la commande

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

Les lignes 1 à 3 traitent du problème des accolades.

La ligne 4 est pour la solution

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

Les lignes 5 à 6 sont le texte intégral automatiquement mis en retrait.
Remarque Le ^M n'est pas saisi directement, mais obtenu par "ctrl+v"+"Entrée".

Mais ceux-ci ne font que résoudre le problème du format.
Le questionneur a dit qu'il devait "formater" le code d'une boucle for en un code avec while
Je suppose que c'est une faute de frappe ?

.
左手右手慢动作

En fait, à proprement parler, vim ne peut pas le gérer. Tout ce que gg=G peut faire est d'ajuster l'indentation en unités de ligne. J'ai vraiment besoin d'outils externes comme lz, comme indent. Supposons que vous ayez une configuration d’indentation parfaite. Ensuite, vous pouvez utiliser %!indent pour le faire dans vim

洪涛

Sélectionnez les lignes que vous souhaitez mettre en retrait, appuyez sur le grand V pour passer en mode ligne, puis appuyez directement sur >retrait droit, <retrait gauche, et disposez-les simplement ligne par ligne_(:з ∠)_

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal