Formateur / indenteur de code source


17

J'utilise Ubuntu 12.04. Je n'ai aucun privilège root ou sudo car il s'agit d'une machine d'entreprise.

Existe-t-il, dans une installation normale d'Ubuntu 12.04, un programme de terminal que je peux utiliser pour transformer un code source laid et mal formé qui n'a aucune indentation en un joli code?

Encore une fois, je ne peux installer aucun paquet, j'ai donc besoin d'un qui est déjà fourni avec Ubuntu, si une telle chose existe.

Par exemple:

    int main()
    {
test(1);
another_function(1);
}

Et puis convertissez-le en:

int main()
{
    test(1);
    another_function(1);
}

Qu'utilisez-vous pour voir ou modifier le code? Vraisemblablement, vous voulez qu'il soit mis en retrait dans votre éditeur, non? Ou voulez-vous le faire à partir de la ligne de commande pour plusieurs fichiers?
terdon

Vous voulez dire comme un outil en ligne?
Braiam

1
Gedit mettra en retrait IIRC, et Kate mettra en évidence et mettra en retrait en fonction du type de fichier si vous avez la possibilité de passer à KDE
eyoung100

Réponses:


12

Si l'éditeur vim est installé, ouvrez le fichier avec vim file.cet tapez =Gpour mettre le fichier en retrait du début à la fin. Enregistrez-le ensuite avec :wq.

Sur les installations par défaut, vi(not vim) est installé, il n'aura donc pas le identpackage requis (comme mentionné par karel).


9

clang-format est votre ami! C'est facile à utiliser et utile.
Voici quelques informations à ce sujet.

Usage

$ clang-format file > formattedfile

Ou:

$ clang-format -i file


Guide étape par étape

1. Code horriblement formaté

#include <iostream>
  using namespace std;
    int main() {
         cout << "Oh";
      cout << "clang format rulez!";       
             }

main.cc

2. Commande magique

$ clang-format -i main.cc


3. Code bien formaté

#include <iostream>
using namespace std;
int main() {
  cout << "Oh";
  cout << "clang format rulez!";
}

main.cc

4. Happiness

Installation

Si vous l'aimez, vous pouvez l'installer avec,

$ sudo apt-get install clang-format

commander.


3

Ouvrez le terminal et exécutez:

sudo apt-get install indent
indent -linux -l120 -i4 -nut unformatted-source-code.cpp

... où unformatted-source-code.cpp est le fichier qui contient du code source C ++ non formaté, tel que le code de votre exemple.

Ou si vous ne pouvez pas l'installer, vous pouvez télécharger le package avec apt-get download indentet l'extraire dpkg-deb -x indent*.deb fs/:, le binaire de retrait est situé dans fs/usr/bin/où fs est n'importe quel répertoire de votre répertoire personnel. Si vous copiez le fichier unformatted-source-code.cpp au même endroit, fs/usr/bin/les commandes pour mettre en retrait le code du terminal sont les suivantes:

cd path/to/fs/usr/bin/  # change directories to the location of "indent" executable
./indent -linux -l120 -i4 -nut unformatted-source-code.cpp

Ces commandes peuvent être exécutées en tant qu'utilisateur normal. Il n'est pas nécessaire d'être root.


2
Je n'ai aucun privilège root ou sudo car il s'agit d'une machine d'entreprise.
user9993

5
@ user9993 Vous pouvez télécharger le package avec apt-get download indentet l'extraire :, dpkg-deb -x indent*.deb fs/le binaire de retrait se trouve dans fs/usr/bin/.
Lekensteyn

2

Par défaut, nano doit être installé dans ubuntu.

Vous pouvez utiliser nano -i filepour modifier avec le retrait automatique activé.

Cela peut ne pas modifier les lignes existantes, car vous devrez peut-être les indenter manuellement.

Voir: http://www.nano-editor.org/dist/v2.0/nano.html


1

astyle et indentation me viennent à l'esprit, mais une installation Ubuntu par défaut ne comprend pas non plus. Bien sûr, si vous avez un compilateur C, vous pouvez les compiler et les installer quelque part dans votre propre PATH.

# Something like -
./configure --prefix=$HOME/tools
make
make install
PATH=$PATH:$HOME/tools/bin

1

emacs:

  • ouvrir le fichier c

  • tout sélectionner

  • retrait (touche de tabulation)

  • enregistrer le fichier

HTH

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.