recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment formater rapidement ce code dans vim ?

#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;
}
高洛峰高洛峰2778 Il y a quelques jours647

répondre à tous(9)je répondrai

  • 仅有的幸福

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

    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.

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 16:35:49

    gg=G

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-16 16:35:49

    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 + .'

    répondre
    0
  • 黄舟

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

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

    Si vous avez installé astyle

    répondre
    0
  • PHPz

    PHPz2017-05-16 16:35:49

    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

    .

    répondre
    0
  • 过去多啦不再A梦

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

    gg
    vG
    =

    répondre
    0
  • 高洛峰

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

    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 ?

    .

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-16 16:35:49

    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

    répondre
    0
  • PHP中文网

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

    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_(:з ∠)_

    répondre
    0
  • Annulerrépondre